Revision | 034f6617a0ffefeab5dada14b7007e500bb097cf (tree) |
---|---|
Time | 2012-07-30 16:06:55 |
Author | Hiroaki Nakano <nakano.hiroaki@nttc...> |
Commiter | Hiroaki Nakano |
ticket 29143 SSLハンドシェイクエラー対処
クライアント数12000のTPCWによるhttps通信負荷を30分かける試験をすると,
30回に1回の割合でcoreを吐くか、SSLハンドシェイクエラーとなって
以降の通信が出来なくなる。
対処として、非同期なSSLのhandshake処理を実行している時、
read_some(), write_some()が実行されないようにする。
Signed-off-by: Hiroaki Nakano <nakano.hiroaki@nttcom.co.jp>
@@ -131,7 +131,7 @@ public: | ||
131 | 131 | |
132 | 132 | virtual std::size_t read_some(const boost::asio::mutable_buffers_1 &buffers, boost::system::error_code &error_code) { |
133 | 133 | boost::mutex::scoped_lock lock(ssl_mutex); |
134 | - if (write_con > 0) { | |
134 | + if (write_con > 0 || handshake_con > 0) { | |
135 | 135 | error_code = boost::asio::error::try_again; |
136 | 136 | return 0; |
137 | 137 | } |
@@ -150,7 +150,7 @@ public: | ||
150 | 150 | virtual size_t write_some(const boost::asio::const_buffers_1 &buffer, boost::system::error_code &error_code) { |
151 | 151 | boost::mutex::scoped_lock lock(ssl_mutex); |
152 | 152 | |
153 | - if (read_con > 0) { | |
153 | + if (read_con > 0 || handshake_con > 0) { | |
154 | 154 | error_code = boost::asio::error::try_again; |
155 | 155 | return 0; |
156 | 156 | } |