gpt4 book ai didi

ssl - openssl ssl_connect 永远阻塞 - 如何设置超时?

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:11 27 4
gpt4 key购买 nike

当用 openssl 编写的服务器不调用 SSL_accept 时,客户端的 SSL_connect 将永远阻塞。openssl -SSL_CTX_set_timeout 、 SSL_SESSION_set_timeout 中有一些超时函数,但这些函数对 SSL_connect 没有影响。

真的没有办法为 SSL_connect 设置超时吗? SSL 服务器有问题并在执行 SSL 握手之前进入循环?

最佳答案

OpenSSL 库在处理套接字相关问题方面为您提供了最大的灵 active 。 SSL_connect 在您的情况下会阻塞,因为您必须将它与阻塞套接字一起使用。请将它与非阻塞套接字一起使用,在这种情况下它将返回 -1。如果您调用 SSL_get_error 函数,这将给您 SSL_ERROR_WANT_READSSL_ERROR_WANT_WRITE 错误,具体取决于 tcp recv 或 send 何时无法分别完成操作。

当获得SSL_ERROR_WANT_WRITE/SSL_ERROR_WANT_READ 时,您必须通过将套接字传递给适当的fd_set 和超时来调用选择函数。如果选择超时,您可以认为您的 SSL_connect 已超时。

注意:SSL_SESSION_set_timeout 用于设置与 SSL 恢复相关联的 session 超时值。它们与连接超时无关。

以下链接应该对您有所帮助(尤其是第二个链接,第 6 节,其中讨论了多路复用 I/O):

关于ssl - openssl ssl_connect 永远阻塞 - 如何设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com