All*_*ain 5 delphi openssl timeout connect
我有一个多线程软件,它TStringList使用对象的HTTPMethod方法遍历一个HTTP URL THTTPSend...然而,一个错误开始出现在代理中 - 少用好的私有代理,更多用坏的公共代理.偶尔会有几个线程挂起并且100%无响应.超时设置和heartbeat代码将被忽略; 不会引起例外.无论我等多久(最多10分钟),线程仍然会挂起.关闭软件是阻止线程的唯一方法.
我发现有罪的方法是SSL_Connect.从我所读到的,这种悬挂行为可以通过使用非阻塞套接字(永远openssl ssl_connect块 - 如何设置超时?)来纠正.
问题是,Synapse是一个阻塞套接字库.我总是可以为这个小软件使用非阻塞套接字库,但我想为我的一些更大的软件实现SSL协议.我不能为另一个可能有自己的bug的Internet库更改所有代码.
如何SSL_Connect在使用Synapse的同时设置某种超时?
没有代码,因为一切都非常简单.这是一个循环的URL的TStringList - 没有别的!但是,如果您认为需要(或者您需要任何其他类型的信息),请告诉我.
Delphi使用: 2007
使用的Synapse版本:发布40(2012)(编辑:最新的SVN中继下载仍存在该错误.)
使用的OpenSSL版本: 1.0.1e