连接到Synapse上的某些代理时,SSL_Connect挂起

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