Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Boost.Asio SSL不正常关闭_Boost_Ssl_Openssl_Boost Asio - Fatal编程技术网

Boost.Asio SSL不正常关闭

Boost.Asio SSL不正常关闭,boost,ssl,openssl,boost-asio,Boost,Ssl,Openssl,Boost Asio,我正在尝试处理SSL错误场景,例如,SSL async_handshake()花费的时间太长。 一段时间后(比如20秒),我想关闭这个连接(最底层().close())。 我将带有连接对象的shared_ptr作为参数传递给async_handshake(),这样对象仍然存在,最终调用握手处理程序并销毁对象 但是,我还是会偶尔撞车!看起来在close()之后,SSL仍在尝试读取或操作读取缓冲区 所以,基本问题是,硬关闭()SSL连接安全吗 有什么想法吗?通常我使用的停止套接字上未完成的异步操作的

我正在尝试处理SSL错误场景,例如,SSL async_handshake()花费的时间太长。 一段时间后(比如20秒),我想关闭这个连接(最底层().close())。 我将带有连接对象的shared_ptr作为参数传递给async_handshake(),这样对象仍然存在,最终调用握手处理程序并销毁对象

但是,我还是会偶尔撞车!看起来在close()之后,SSL仍在尝试读取或操作读取缓冲区

所以,基本问题是,硬关闭()SSL连接安全吗


有什么想法吗?

通常我使用的停止套接字上未完成的异步操作的方法是
socket::cancel
,如中所述。它们的处理程序将以
asio::error::operation\u aborted
作为错误参数调用,您需要以某种方式处理该参数

也就是说,我认为使用
close
而不是
cancel
没有问题。虽然如果没有一些代码进行分析,很难提供很多帮助或建议



请注意,某些Windows平台在取消未完成的异步操作时出现问题。如果您的应用程序需要支持Windows,则可用于便携式取消。

这在异步握手情况下没有帮助,至少对我来说是这样。@PSIAlt使用
cancel()
添加了一个指向有关Windows平台和限制的文档的链接,谢谢,但我遇到了与linux上的OP相同的问题。它很容易复制:设置异步握手和设置截止期计时器大约2-5毫秒。在此计时器上,我使用
最低层()关闭
ssl::stream
的底层连接。关闭()
并在
ssl\u connect
中转储应用程序核心。。不知道如何修复,只是现在增加了计时器