Every sent handshake message is inserted into a sent queue until it
has been acknowledged. When a timeout occurs, all messages in the sent
queue will be repeated. When inserting a message into the queue, its
sequence number bitwise ORed with the current epoch will used as the
index. When a retransmission is necessary, the messages in the queue
are looked up only by the sequence number as index, so nothing will be
found and the retransmission fails. Removing the epoch when generating
the index solves this issue.
--- ssl/d1_both.c 2007-10-17 23:17:49.000000000 +0200
+++ ssl/d1_both.c 2009-01-28 13:57:57.000000000 +0100
@@ -1004,7 +1004,7 @@
frag->msg_header.is_ccs = is_ccs;
pq_64bit_init(&seq64);
- pq_64bit_assign_word(&seq64, epoch<<16 | frag->msg_header.seq);
+ pq_64bit_assign_word(&seq64, frag->msg_header.seq);
item = pitem_new(seq64, frag);
pq_64bit_free(&seq64);
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [email protected]