当用openssl编写的服务器没有调用SSL_accept时,客户端的SSL_connect永远阻塞.openssl -SSL_CTX_set_timeout,SSL_SESSION_set_timeout中有一些超时函数,但这些函数对SSL_connect没有影响.
当例如ssl服务器出错并在进行SSL握手之前进入循环时,是否真的没有办法为SSL_connect设置超时?
Jay*_*Jay 12
OpenSSL库为处理套接字相关问题提供了最大的灵活性.在SSL_connect你的情况块,因为你必须使用它与阻塞套接字.请使用非阻塞套接字,在这种情况下,它将以-1返回.如果你调用的SSL_get_error函数会给你SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE错误,这取决于tcp recv或send无法分别完成操作.
当SSL_ERROR_WANT_WRITE/ SSL_ERROR_WANT_READ得到,你必须通过到合适的插座调用选择功能fd_set和超时.如果选择超时,您可以考虑您的SSL_connect超时时间.
注: 该SSL_SESSION_set_timeout用于设置与之连接的SSL会话恢复超时值.它们与超时连接无关.
以下链接应该对您有所帮助(特别是第二节,第6节讨论多路复用I/O):
| 归档时间: |
|
| 查看次数: |
10602 次 |
| 最近记录: |