diff options
| author | Simon Goldschmidt <goldsimon@gmx.de> | 2014-01-18 21:40:17 +0100 |
|---|---|---|
| committer | Simon Goldschmidt <goldsimon@gmx.de> | 2014-01-18 21:40:17 +0100 |
| commit | 32b1a9fc8a335c4c771023dd8ace9db9fd814ad1 (patch) | |
| tree | e36d29b0e718c1186ff488cf14561210768a907f | |
| parent | 018719d9d3229bcc7e05995be2221dd13eb724ee (diff) | |
| download | lwip-32b1a9fc8a335c4c771023dd8ace9db9fd814ad1.tar.gz | |
patch #8237 by Brian Fahs: tcp_rexmit_rto fails to update pcb->unsent_oversize when necessary
| -rw-r--r-- | CHANGELOG | 4 | ||||
| -rw-r--r-- | src/core/tcp_out.c | 7 |
2 files changed, 10 insertions, 1 deletions
@@ -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 diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c index b9fc339..b78ee28 100644 --- a/src/core/tcp_out.c +++ b/src/core/tcp_out.c @@ -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; |
