commit e3243ad5f6a2c6acfd671e2cab22c4b6a4c21f47 Author: Nick Mathewson nickm@torproject.org Date: Tue May 15 11:13:49 2012 -0400
Treat SW_SERVER_HELLO_B as another sign of an SSL handshake
We've been only treating SW_SERVER_HELLO_A as meaning that an SSL handshake was happening. But that's not right: if the initial attempt to write a ServerHello fails, we would get a callback in state SW_SERVER_HELLO_B instead.
(That's "instead" and not "in addition": any failed attempt to write the hello will fail and cause the info callback not to get written.)
Fix for bug 4592; bugfix on 0.2.0.13-alpha. --- changes/bug4592 | 3 +++ src/common/tortls.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/changes/bug4592 b/changes/bug4592 new file mode 100644 index 0000000..31140b0 --- /dev/null +++ b/changes/bug4592 @@ -0,0 +1,3 @@ + o Minor bugfixes: + - Detect SSL handshake even when the initial attempt to write the + server hello fails. Fix for bug 4592; bugfix on 0.2.0.13-alpha. diff --git a/src/common/tortls.c b/src/common/tortls.c index 4c9d218..c54ed46 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -951,7 +951,8 @@ tor_tls_server_info_callback(const SSL *ssl, int type, int val) (void) val; if (type != SSL_CB_ACCEPT_LOOP) return; - if (ssl->state != SSL3_ST_SW_SRVR_HELLO_A) + if ((ssl->state != SSL3_ST_SW_SRVR_HELLO_A) && + (ssl->state != SSL3_ST_SW_SRVR_HELLO_B)) return;
tls = tor_tls_get_by_ssl(ssl);
tor-commits@lists.torproject.org