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.
This commit is contained in:
Nick Mathewson
2012-05-15 11:13:49 -04:00
parent 5905a0b2db
commit e3243ad5f6
2 changed files with 5 additions and 1 deletions
+3
View File
@@ -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.
+2 -1
View File
@@ -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);