2010-12-07 10 views
2

boost :: asioは再帰的なサーバー接続を正しく処理しますか?boost :: asioと再帰的サーバー呼び出し

async_readハンドラ内から自分自身に接続し、デッドロックしているようなTCP/IP非同期サーバーがあります。次のasync_acceptは動作していますが、async_readブロックです。

サーバーは、スレッドプールを持つhttp asioの例に基づいています。

クライアントが使用している特定のAPIを実装しており、一部の機能を別のサーバ(プロキシやクラウドノードのように機能する)に委譲することもできます。問題は、別のサーバーがローカルホスト(例えば、それ自体)である場合、デッドロックがasioライブラリのどこかで発生することです。

提案がありますか?

+0

コードを投稿できますか? –

+0

さて、デッドロックの原因となるASIO内には、グローバルなSSLストランドが存在することが実際に分かりました。今は回避策を探す必要があるので、非常に不幸です。 実際に状況を改善するパッチがありますが、完全には解決していません。https://svn.boost.org/trac/boost/ticket/3958 – dremon

答えて

1

私は実際に問題がSSLソケットであることを知りました。サーバが自分自身を呼び出すと、ハンドシェイク機能がデッドロックします。おそらくasio sslコード内の鎖に関連しています。

+2

興味深い。おそらくASIOユーザーメーリングリストに質問を提出することができます:https://lists.sourceforge.net/lists/listinfo/asio-users –

関連する問題