Retransmit only on last message from prev flight
Be a good network citizen, try to avoid causing congestion by causing a
retransmission explosion.
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index de85b67..e72aa3e 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2753,8 +2753,10 @@
if( ssl->handshake != NULL &&
recv_msg_seq != ssl->handshake->in_msg_seq )
{
- /* No sane server ever retransmits HelloVerifyRequest */
- if( recv_msg_seq < ssl->handshake->in_flight_start_seq &&
+ /* Retransmit only on last message from previous flight, to avoid
+ * too many retransmissions.
+ * Besides, No sane server ever retransmits HelloVerifyRequest */
+ if( recv_msg_seq == ssl->handshake->in_flight_start_seq - 1 &&
ssl->in_msg[0] != SSL_HS_HELLO_VERIFY_REQUEST )
{
SSL_DEBUG_MSG( 2, ( "received message from last flight, "