lwIP - A Lightweight TCP/IP stack - Bugs: bug #48328, Fatal RST/ACK loop caused by...
You are not allowed to post comments on this tracker with your current authentication level.
bug #48328: Fatal RST/ACK loop caused by commit "fixed bug #48170"
Submitter: | Ambroz Bizjak <abizjak> | ||
Submitted: | Tue 28 Jun 2016 10:25:59 AM UTC | ||
Category: | TCP | Severity: | 3 - Normal |
Item Group: | Faulty Behaviour | Status: | Fixed |
Privacy: | Public | Assigned to: | goldsimon |
Open/Closed: | Closed | Planned Release: | None |
lwIP version: | git head |
Jump to the original submission
Sat 20 Aug 2016 11:55:00 AM UTC, comment #8: |
Ambroz Bizjak <abizjak> |
Thu 30 Jun 2016 06:51:39 AM UTC, comment #7: I've pushed a better fix. Thanks for reporting. |
Simon Goldschmidt <goldsimon> |
Thu 30 Jun 2016 06:27:00 AM UTC, comment #6: Right, seems like I messed that up. However, I don't agree to the patch as it accepts "seqno == pcb->rcv_nxt" in stat SYN_SENT, too, which it didn't before. |
Simon Goldschmidt <goldsimon> |
Tue 28 Jun 2016 11:11:30 AM UTC, comment #5: I confirm the change in comment #3 (and comment #2 ignoring the second change that is irrelevant) fixes the issue for me. |
Ambroz Bizjak <abizjak> |
Tue 28 Jun 2016 11:07:50 AM UTC, comment #4: I don't agree with applying this patch, we should revert the wrong fix and apply the real fix in an atomic patch with both diffset combined. |
Sylvain Rochet <gradator> |
Tue 28 Jun 2016 11:04:32 AM UTC, comment #3: Attached the patch. |
Axel Lin <axellin> |
Tue 28 Jun 2016 10:54:57 AM UTC, comment #2: That should do it, I referenced this commit in this mail which talk about this commit:
|
Sylvain Rochet <gradator> |
Tue 28 Jun 2016 10:45:09 AM UTC, comment #1: Does below change work for you?
|
Axel Lin <axellin> |
Tue 28 Jun 2016 10:25:59 AM UTC, original submission:
The following commit causes a fatal DOS condition in my setup when a client closes the connection:
|
Ambroz Bizjak <abizjak> |
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 |
---|---|---|---|---|---|
2016-06-30 | goldsimon | Status | In Progress | Fixed | |
Open/Closed | Open | Closed | |||
2016-06-30 | goldsimon | Status | None | In Progress | |
Assigned to | None | goldsimon | |||
2016-06-28 | goldsimon | Planned Release | 2.0.0 Beta2 | ||
2016-06-28 | axellin | Attached File | - | Added 0001-Fix-bug-48328-Fatal-RST-ACK-loop-caused-by-commit-fi.patch, #37611 | |
2016-06-28 | abizjak | Attached File | - | Added error.pcapng, #37610 |
Powered by Savane 3.13-758e.
Corresponding source code
Hey,
Just a remark. I'm reading the TCP RFC (793) and I think the specs under Event Processing actually contradicts the more informal description on reset handling on page 37, which lwIP supposedly violates.
On page 69, acceptability of a received segment is defined, which does indeed classify out-of-sequence RSTs as acceptable. However, there is also this text:
"In the following it is assumed that the segment is the idealized segment that begins at RCV.NXT and does not exceed the window. ..."
And since the RST checking (page 70, 71) is specified after this, out-of-sequence (but in-window) RSTs should be dropped or buffered for later processing, rather than abort the connection immediately. On the other only non-acceptable (according to the exact definition on page 69) RSTs should be ACKed.
lwIP could be changed to be more compliant in that respect.