Do not cache bogus results from classifying client ciphers

When classifying a client's selection of TLS ciphers, if the client
ciphers are not yet available, do not cache the result. Previously,
we had cached the unavailability of the cipher list and never looked
again, which in turn led us to assume that the client only supported
the ancient V1 link protocol.  This, in turn, was causing Stem
integration tests to stall in some cases.  Fixes bug 30021; bugfix
on 0.2.4.8-alpha.
This commit is contained in:
Nick Mathewson 2019-04-04 11:24:55 -04:00
parent 54e249e269
commit 1710f4bbd6
2 changed files with 9 additions and 1 deletions

8
changes/bug30021 Normal file
View File

@ -0,0 +1,8 @@
o Minor bugfixes (TLS protocol, integration tests):
- When classifying a client's selection of TLS ciphers, if the client
ciphers are not yet available, do not cache the result. Previously,
we had cached the unavailability of the cipher list and never looked
again, which in turn led us to assume that the client only supported
the ancient V1 link protocol. This, in turn, was causing Stem
integration tests to stall in some cases.
Fixes bug 30021; bugfix on 0.2.4.8-alpha.

View File

@ -1500,7 +1500,7 @@ tor_tls_classify_client_ciphers(const SSL *ssl,
smartlist_free(elts); smartlist_free(elts);
} }
done: done:
if (tor_tls) if (tor_tls && peer_ciphers)
return tor_tls->client_cipher_list_type = res; return tor_tls->client_cipher_list_type = res;
return res; return res;