PR: 2748
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de> Fix possible DTLS timer deadlock.
This commit is contained in:
parent
d895f7f060
commit
0fbf8b9cea
@ -330,7 +330,6 @@ int dtls1_connect(SSL *s)
|
|||||||
if (ret <= 0) goto end;
|
if (ret <= 0) goto end;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dtls1_stop_timer(s);
|
|
||||||
if (s->hit)
|
if (s->hit)
|
||||||
{
|
{
|
||||||
#ifndef OPENSSL_NO_SCTP
|
#ifndef OPENSSL_NO_SCTP
|
||||||
@ -441,6 +440,7 @@ int dtls1_connect(SSL *s)
|
|||||||
case SSL3_ST_CR_SRVR_DONE_B:
|
case SSL3_ST_CR_SRVR_DONE_B:
|
||||||
ret=ssl3_get_server_done(s);
|
ret=ssl3_get_server_done(s);
|
||||||
if (ret <= 0) goto end;
|
if (ret <= 0) goto end;
|
||||||
|
dtls1_stop_timer(s);
|
||||||
if (s->s3->tmp.cert_req)
|
if (s->s3->tmp.cert_req)
|
||||||
s->s3->tmp.next_state=SSL3_ST_CW_CERT_A;
|
s->s3->tmp.next_state=SSL3_ST_CW_CERT_A;
|
||||||
else
|
else
|
||||||
|
@ -591,15 +591,16 @@ int dtls1_accept(SSL *s)
|
|||||||
ret = ssl3_check_client_hello(s);
|
ret = ssl3_check_client_hello(s);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto end;
|
goto end;
|
||||||
dtls1_stop_timer(s);
|
|
||||||
if (ret == 2)
|
if (ret == 2)
|
||||||
|
{
|
||||||
|
dtls1_stop_timer(s);
|
||||||
s->state = SSL3_ST_SR_CLNT_HELLO_C;
|
s->state = SSL3_ST_SR_CLNT_HELLO_C;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
/* could be sent for a DH cert, even if we
|
/* could be sent for a DH cert, even if we
|
||||||
* have not asked for it :-) */
|
* have not asked for it :-) */
|
||||||
ret=ssl3_get_client_certificate(s);
|
ret=ssl3_get_client_certificate(s);
|
||||||
if (ret <= 0) goto end;
|
if (ret <= 0) goto end;
|
||||||
dtls1_stop_timer(s);
|
|
||||||
s->init_num=0;
|
s->init_num=0;
|
||||||
s->state=SSL3_ST_SR_KEY_EXCH_A;
|
s->state=SSL3_ST_SR_KEY_EXCH_A;
|
||||||
}
|
}
|
||||||
@ -609,7 +610,6 @@ int dtls1_accept(SSL *s)
|
|||||||
case SSL3_ST_SR_KEY_EXCH_B:
|
case SSL3_ST_SR_KEY_EXCH_B:
|
||||||
ret=ssl3_get_client_key_exchange(s);
|
ret=ssl3_get_client_key_exchange(s);
|
||||||
if (ret <= 0) goto end;
|
if (ret <= 0) goto end;
|
||||||
dtls1_stop_timer(s);
|
|
||||||
#ifndef OPENSSL_NO_SCTP
|
#ifndef OPENSSL_NO_SCTP
|
||||||
/* Add new shared key for SCTP-Auth,
|
/* Add new shared key for SCTP-Auth,
|
||||||
* will be ignored if no SCTP used.
|
* will be ignored if no SCTP used.
|
||||||
@ -661,7 +661,6 @@ int dtls1_accept(SSL *s)
|
|||||||
/* we should decide if we expected this one */
|
/* we should decide if we expected this one */
|
||||||
ret=ssl3_get_cert_verify(s);
|
ret=ssl3_get_cert_verify(s);
|
||||||
if (ret <= 0) goto end;
|
if (ret <= 0) goto end;
|
||||||
dtls1_stop_timer(s);
|
|
||||||
#ifndef OPENSSL_NO_SCTP
|
#ifndef OPENSSL_NO_SCTP
|
||||||
if (BIO_dgram_is_sctp(SSL_get_wbio(s)) &&
|
if (BIO_dgram_is_sctp(SSL_get_wbio(s)) &&
|
||||||
state == SSL_ST_RENEGOTIATE)
|
state == SSL_ST_RENEGOTIATE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user