patch #8237 by Brian Fahs: tcp_rexmit_rto fails to update pcb->unsent_oversize when necessary

This commit is contained in:
Simon Goldschmidt 2014-01-18 21:40:17 +01:00
parent 018719d9d3
commit 32b1a9fc8a
2 changed files with 10 additions and 1 deletions

View File

@ -84,6 +84,10 @@ HISTORY
++ Bugfixes:
2014-01-18: Brian Fahs
* tcp_out.c: patch #8237: tcp_rexmit_rto fails to update pcb->unsent_oversize
when necessary
2014-01-17: Grant Erickson, Jay Logue, Simon Goldschmidt
* ipv6.c, netif.c: patch #7913 Enable Support for IPv6 Loopback

View File

@ -1261,11 +1261,16 @@ tcp_rexmit_rto(struct tcp_pcb *pcb)
for (seg = pcb->unacked; seg->next != NULL; seg = seg->next);
/* concatenate unsent queue after unacked queue */
seg->next = pcb->unsent;
#if TCP_OVERSIZE && TCP_OVERSIZE_DBGCHECK
/* if last unsent changed, we need to update unsent_oversize */
if (pcb->unsent == NULL) {
pcb->unsent_oversize = seg->oversize_left;
}
#endif /* TCP_OVERSIZE && TCP_OVERSIZE_DBGCHECK*/
/* unsent queue is the concatenated queue (of unacked, unsent) */
pcb->unsent = pcb->unacked;
/* unacked queue is now empty */
pcb->unacked = NULL;
/* last unsent hasn't changed, no need to reset unsent_oversize */
/* increment number of retransmissions */
++pcb->nrtx;