首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openssl ssl_connect永远阻塞-如何设置超时?

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

Stack Overflow用户
提问于 2012-08-06 20:11:19
回答 1查看 13.7K关注 0票数 14

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

当SSL_connect服务器在进行ssl握手之前陷入循环时,是否真的没有为SSL设置超时的方法?

EN

回答 1

Stack Overflow用户

发布于 2012-08-08 10:30:09

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

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

注意: SSL_SESSION_set_timeout用于设置会话超时值,这些值链接到SSL恢复。它们与超时连接无关。

下面的链接应该对您有帮助(特别是第二个链接,第6节,其中讨论了多重I/O):

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11835203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档