Commit 4058861f authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

PR: 2462

Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>
Reviewed by: steve

Fix DTLS Retransmission Buffer Bug
parent f74a0c0c
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
@@ -468,20 +468,6 @@ again:
	if (!s->d1->listen)
		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;
	return s->init_num;

+2 −0
Original line number Diff line number Diff line
@@ -330,6 +330,8 @@ void dtls1_stop_timer(SSL *s)
	memset(&(s->d1->next_timeout), 0, sizeof(struct timeval));
	s->d1->timeout_duration = 1;
	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)