OpenSSL 1.0.1e でブースト 1.54.0 を使用しています。
SSL 接続オブジェクトを時々閉じると、async_shutdown()の完了ハンドラが呼び出されないことがわかります。
デバッグした後、これは async_write() よりも優れている場合に発生することがわかりました。
SSL async_shutdown() は SSL Alert(Closing) を送信する必要があるため、ここでは 2 つの書き込みがあります。複数の async_write() が禁止されていることは知っています。
状況をどのように処理すればよいですか?SSL async_shutdown() を呼び出す前に、async_write() の完了を待つ必要がありますか?
編集:これによると、未処理のすべての非同期操作をキャンセルするには、基になる TCP ソケットでおそらく cancel() が必要です。それが正しいか?
編集async_ API を常に使用している場合、電話できますshutdown()
か、または電話する必要がありますasync_shutdown()
か?