5

我有一个多线程软件,它使用对象的方法循环通过一个TStringListHTTP URL ... 但是,代理开始出现一个错误 - 较少使用好的私有代理,更多的是坏的公共代理。有时,一些线程会挂起并变得 100% 无响应。超时设置和代码将被忽略;不会提出任何例外。不管我要等多久(最多 10 分钟),线程仍然会挂起。关闭软件是停止线程的唯一方法。HTTPMethodTHTTPSendheartbeat

我发现被指控的方法是SSL_Connect。根据我的阅读,可以通过使用非阻塞套接字来纠正这种挂起行为(openssl ssl_connect 永远阻塞 - 如何设置超时?

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

如何SSL_Connect在仍在使用 Synapse 的同时设置某种超时?

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

德尔福使用: 2007

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

使用的 OpenSSL 版本: 1.0.1e

4

0 回答 0