PR: 2462
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de> Reviewed by: steve Fix DTLS Retransmission Buffer Bug
This commit is contained in:
parent
fbbf28e7c2
commit
3622d3743e
@ -468,20 +468,6 @@ again:
|
|||||||
if (!s->d1->listen)
|
if (!s->d1->listen)
|
||||||
s->d1->handshake_read_seq++;
|
s->d1->handshake_read_seq++;
|
||||||
|
|
||||||
/* we just read a handshake message from the other side:
|
|
||||||
* this means that we don't need to retransmit of the
|
|
||||||
* buffered messages.
|
|
||||||
* XDTLS: may be able clear out this
|
|
||||||
* buffer a little sooner (i.e if an out-of-order
|
|
||||||
* handshake message/record is received at the record
|
|
||||||
* layer.
|
|
||||||
* XDTLS: exception is that the server needs to
|
|
||||||
* know that change cipher spec and finished messages
|
|
||||||
* have been received by the client before clearing this
|
|
||||||
* buffer. this can simply be done by waiting for the
|
|
||||||
* first data segment, but is there a better way? */
|
|
||||||
dtls1_clear_record_buffer(s);
|
|
||||||
|
|
||||||
s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH;
|
s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH;
|
||||||
return s->init_num;
|
return s->init_num;
|
||||||
|
|
||||||
|
@ -330,6 +330,8 @@ void dtls1_stop_timer(SSL *s)
|
|||||||
memset(&(s->d1->next_timeout), 0, sizeof(struct timeval));
|
memset(&(s->d1->next_timeout), 0, sizeof(struct timeval));
|
||||||
s->d1->timeout_duration = 1;
|
s->d1->timeout_duration = 1;
|
||||||
BIO_ctrl(SSL_get_rbio(s), BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0, &(s->d1->next_timeout));
|
BIO_ctrl(SSL_get_rbio(s), BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT, 0, &(s->d1->next_timeout));
|
||||||
|
/* Clear retransmission buffer */
|
||||||
|
dtls1_clear_record_buffer(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
int dtls1_handle_timeout(SSL *s)
|
int dtls1_handle_timeout(SSL *s)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user