5

オブジェクトのメソッドをTStringList使用して一連の HTTP URL をループするマルチスレッド ソフトウェアを使用しています... しかし、プロキシでバグが発生し始めました。ときどき、いくつかのスレッドがハングし、100% 応答しなくなりました。タイムアウト設定とコードは無視されます。例外は発生しません。どれだけ長く (最大 10 分) 待っても、スレッドはハングしたままです。スレッドを停止する唯一の方法は、ソフトウェアを閉じることでした。HTTPMethodTHTTPSendheartbeat

罪に問われた方法がSSL_Connect. 私が読んだことから、このハング動作は、非ブロック ソケットを使用することで修正できます ( openssl ssl_connect は永久にブロックされます - タイムアウトの設定方法は? )

問題は、Synapse がブロッキング ソケット ライブラリであるということです。この小さなソフトウェアには常にノンブロッキング ソケット ライブラリを使用できますが、より大きなソフトウェアには SSL プロトコルを実装したいと考えています。とにかく独自のバグがある可能性が高い別のインターネット ライブラリのすべてのコードを変更する余裕はありません。

SSL_ConnectSynapse を使用している間に何らかのタイムアウトを設定するにはどうすればよいですか?

すべてが非常に簡単なので、コードはありません。これは、ループされる URL の TStringList です。他には何もありません。ただし、それが必要だと思われる場合 (または他の種類の情報が必要な場合) は、お知らせください。

Delphi 使用: 2007

使用されている Synapse のバージョン:リリース 40 (2012) (編集:最新の SVN トランク ダウンロードにはまだバグが存在します。)

使用されている OpenSSL のバージョン: 1.0.1e

4

0 に答える 0