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

时间:2013-02-24 20:09:22

标签: delphi openssl timeout connect

我有一个多线程软件,使用TStringList对象的HTTPMethod方法遍历THTTPSend个HTTP网址...但是,代理中出现了一个错误 - 较少有良好的私人代理,更多与坏公共代理。偶尔会有几个线程挂起并且100%无响应。超时设置和heartbeat代码将被忽略;不会引起例外。无论我等多久(最多10分钟),线程仍然会挂起。关闭软件是阻止线程的唯一方法。

我发现有罪的方法是SSL_Connect。根据我的阅读,这种悬挂行为可以通过使用非阻塞套接字来纠正(openssl ssl_connect blocks forever - how to set timeout?

问题是,Synapse是一个阻塞套接字库。我总是可以为这个小软件使用非阻塞套接字库,但我想为我的一些更大的软件实现SSL协议。我不能为另一个可能有自己的bug的Internet库更改所有代码。

如何在仍然使用Synapse时为SSL_Connect设置某种超时?

没有代码,因为一切都非常简单。这是一个循环的URL的TStringList - 没有别的!但是,如果您认为需要(或者您需要任何其他类型的信息),请告诉我。

Delphi使用: 2007

使用的Synapse版本:版本40(2012)(编辑:最新的SVN中继下载仍然存在该错误。)

使用的OpenSSL版本: 1.0.1e

0 个答案:

没有答案