summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2018-01-16 11:26:50 +0000
committerMatt Caswell <matt@openssl.org>2018-03-21 10:27:29 +0000
commit424afe931e7d813f75c7d1eacad7a5cd946c6456 (patch)
tree474015b75281580eb04ecca919c46c4afb193932 /ssl
parent2e92af5ea5987354fd7fe582a07440ff7aca01f4 (diff)
Don't wait for dry at the end of a handshake
For DTLS/SCTP we were waiting for a dry event during the call to tls_finish_handshake(). This function just tidies up various internal things, and after it completes the handshake is over. I can find no good reason for waiting for a dry event here, and nothing in RFC6083 suggests to me that we should need to. More importantly though it seems to be wrong. It is perfectly possible for a peer to send app data/alerts/new handshake while we are still cleaning up our handshake. If this happens then we will never get the dry event and so we cannot continue. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5084)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/statem/statem_lib.c9
1 files changed, 0 insertions, 9 deletions
diff --git a/ssl/statem/statem_lib.c b/ssl/statem/statem_lib.c
index a82079c2ee..190050c180 100644
--- a/ssl/statem/statem_lib.c
+++ b/ssl/statem/statem_lib.c
@@ -1004,15 +1004,6 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop)
int discard;
void (*cb) (const SSL *ssl, int type, int val) = NULL;
-#ifndef OPENSSL_NO_SCTP
- if (SSL_IS_DTLS(s) && BIO_dgram_is_sctp(SSL_get_wbio(s))) {
- WORK_STATE ret;
- ret = dtls_wait_for_dry(s);
- if (ret != WORK_FINISHED_CONTINUE)
- return ret;
- }
-#endif
-
if (clearbufs) {
if (!SSL_IS_DTLS(s)) {
/*