lwIP - A Lightweight TCP/IP stack - Bugs: bug #32417, TCP_OVERSIZE seems to have...
You are not allowed to post comments on this tracker with your current authentication level.
bug #32417: TCP_OVERSIZE seems to have problems with (fast-)retransmission
Submitter: | Simon Goldschmidt <goldsimon> | ||
Submitted: | Thu 10 Feb 2011 08:15:45 PM UTC | ||
Category: | TCP | Severity: | 3 - Normal |
Item Group: | Crash Error | Status: | Fixed |
Privacy: | Public | Assigned to: | goldsimon |
Open/Closed: | Closed | Planned Release: | None |
lwIP version: | CVS Head |
Jump to the original submission
Mon 24 Apr 2017 06:51:11 PM UTC, comment #8: |
Simon Goldschmidt <goldsimon> |
Wed 07 Dec 2011 07:02:43 PM UTC, comment #7:
|
Joe Eykholt <jre1> |
Tue 06 Dec 2011 08:18:36 PM UTC, comment #6:
|
Simon Goldschmidt <goldsimon> |
Tue 06 Dec 2011 05:18:24 PM UTC, comment #5: On September 4, 2011, I posted this on the developer list:
|
Joe Eykholt <jre1> |
Thu 29 Sep 2011 06:58:05 PM UTC, comment #4: I'll close this as fixed: there were 2 places where the last segment in pcb->unsent could be changed where pcb->unsent_oversize wasn't reset, so this might well fix the bug without the pcb->unsent bug being fixed.
|
Simon Goldschmidt <goldsimon> |
Thu 01 Sep 2011 07:35:18 PM UTC, comment #3: Thank you for the detailed analysis. This is a serious bug, and I don't think the solution will be trivial. I'm assigning to me to try and come up with something that will allow us to sort the list without corrupting the order. |
Kieran Mansley <kieranm> |
Wed 31 Aug 2011 02:54:25 PM UTC, comment #2: When seqno is cycled from 2^32 to 0, it's low possible that the unack_list will become an unordered list.
|
tao tang <opensms4> |
Tue 12 Apr 2011 08:03:16 PM UTC, comment #1: I'm having a hard time reproducing this in unit tests and the code seems correct to me: pcb->unsent_oversize always represents the oversize bytes in the last unsent segment. If segments in the unsent queue are ordered by segno, the 'last_unsent' segment does not even get changed by the fast-retsansmission code: (fast-)retransmitted segments get sorted in to the before 'last_unsent' and thus pcb->oversize_left should not get changed in this scenario.
|
Simon Goldschmidt <goldsimon> |
Thu 10 Feb 2011 08:15:45 PM UTC, original submission:
observed by MK on lwip-devel (09.02.2011):
and put the unacked segment into the unsent queue. While it is doing
|
Simon Goldschmidt <goldsimon> |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Follow 7 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2011-09-29 | goldsimon | Status | None | Fixed | |
Assigned to | kieranm | goldsimon | |||
Open/Closed | Open | Closed | |||
Planned Release | 1.4.1 | ||||
2011-09-01 | kieranm | Status | Works For Me | None | |
Assigned to | None | kieranm | |||
2011-04-13 | goldsimon | Status | None | Works For Me |
Powered by Savane 3.13-d3ae.
Corresponding source code
It's been a while since the last comments here, I've come back here via bug #50694 (TX exist more pbufs after enable LWIP_NETIF_TX_SINGLE_PBUF).
I just wanted to make clear Joe is wrong: segments get removed only if an ACK acknowledges all bytes in that segment. Even if only one byte is unacked in a segment, that segment will be completely retransmitted until all bytes are ACKed. Bein like that, adding data to an already transmitted segment should do no harm.