【发布时间】:2013-08-22 06:25:17
【问题描述】:
我正在使用带有 OpenSSL 1.0.1e 的 boost 1.54.0。
不时关闭 SSL 连接对象时,我看到 async_shutdown() 的完成处理程序没有被调用。
调试后我发现,当有 outstaing async_write() 时会发生这种情况。
SSL async_shutdown() 应该发送 SSL Alert(Closing),因此我们这里有 2 次写入。 我知道禁止使用多个 async_write()。
我应该如何处理这种情况? 我应该在调用 SSL async_shutdown() 之前等待 async_write() 完成吗?
编辑:根据this,我可能需要在底层 TCP 套接字上使用 cancel() 来取消所有未完成的异步操作。对吗?
编辑如果我一直在使用 async_ API,我可以调用shutdown() 还是必须调用async_shutdown()?
【问题讨论】:
标签: c++ boost boost-asio