diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2012-03-06 13:20:20 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2012-03-06 13:20:20 +0000 |
commit | 4e7f6d380ded86f19dea9465ac296b1be4e2d180 (patch) | |
tree | da796308e6c99ef514e5dc4c51b6cfec041a6406 /ssl | |
parent | f0be325f885201430206559831f5e1c936be5df3 (diff) | |
download | openssl-new-4e7f6d380ded86f19dea9465ac296b1be4e2d180.tar.gz |
PR: 2748
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>
Fix possible DTLS timer deadlock.
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/d1_clnt.c | 2 | ||||
-rw-r--r-- | ssl/d1_srvr.c | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/ssl/d1_clnt.c b/ssl/d1_clnt.c index 4001a5a673..ac24bfb35e 100644 --- a/ssl/d1_clnt.c +++ b/ssl/d1_clnt.c @@ -257,7 +257,6 @@ int dtls1_connect(SSL *s) if (ret <= 0) goto end; else { - dtls1_stop_timer(s); if (s->hit) s->state=SSL3_ST_CR_FINISHED_A; else @@ -350,6 +349,7 @@ int dtls1_connect(SSL *s) case SSL3_ST_CR_SRVR_DONE_B: ret=ssl3_get_server_done(s); if (ret <= 0) goto end; + dtls1_stop_timer(s); if (s->s3->tmp.cert_req) s->state=SSL3_ST_CW_CERT_A; else diff --git a/ssl/d1_srvr.c b/ssl/d1_srvr.c index c3144da0c2..f7bb18e703 100644 --- a/ssl/d1_srvr.c +++ b/ssl/d1_srvr.c @@ -473,15 +473,16 @@ int dtls1_accept(SSL *s) ret = ssl3_check_client_hello(s); if (ret <= 0) goto end; - dtls1_stop_timer(s); if (ret == 2) + { + dtls1_stop_timer(s); s->state = SSL3_ST_SR_CLNT_HELLO_C; + } else { /* could be sent for a DH cert, even if we * have not asked for it :-) */ ret=ssl3_get_client_certificate(s); if (ret <= 0) goto end; - dtls1_stop_timer(s); s->init_num=0; s->state=SSL3_ST_SR_KEY_EXCH_A; } @@ -491,7 +492,6 @@ int dtls1_accept(SSL *s) case SSL3_ST_SR_KEY_EXCH_B: ret=ssl3_get_client_key_exchange(s); if (ret <= 0) goto end; - dtls1_stop_timer(s); s->state=SSL3_ST_SR_CERT_VRFY_A; s->init_num=0; @@ -513,7 +513,6 @@ int dtls1_accept(SSL *s) /* we should decide if we expected this one */ ret=ssl3_get_cert_verify(s); if (ret <= 0) goto end; - dtls1_stop_timer(s); s->state=SSL3_ST_SR_FINISHED_A; s->init_num=0; |