tcp: Fix retransmission timeout handling for TCP connections in SYN_RCVD state

2.1.3-esp: 6bf7044c bugfix for optimize tcp connection
This commit is contained in:
xueyunfei
2024-09-11 09:10:14 +02:00
committed by David Cermak
parent 3462f21a38
commit b58c9660f2
+4
View File
@@ -1293,7 +1293,11 @@ tcp_slowtmr_start:
if ((tcp_rexmit_rto_prepare(pcb) == ERR_OK) || ((pcb->unacked == NULL) && (pcb->unsent != NULL))) {
/* Double retransmission time-out unless we are trying to
* connect to somebody (i.e., we are in SYN_SENT). */
#if ESP_LWIP
if (pcb->state != SYN_SENT && pcb->state != SYN_RCVD) {
#else
if (pcb->state != SYN_SENT) {
#endif
u8_t backoff_idx = LWIP_MIN(pcb->nrtx, sizeof(tcp_backoff) - 1);
int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx];
pcb->rto = (s16_t)LWIP_MIN(calc_rto, 0x7FFF);