[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [bug #28288] Data after FIN in oos queue
From: |
Simon Goldschmidt |
Subject: |
[lwip-devel] [bug #28288] Data after FIN in oos queue |
Date: |
Mon, 11 Jan 2010 17:49:21 +0000 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 |
Follow-up Comment #9, bug #28288 (project lwip):
Possible states for duplicate FINs are
1. received FIN is ooseq, ooseq already contains FIN (with another seqno) or
2. received FIN is inseq, ooseq already contains FIN (with another seqno) or
3. received FIN is inseq, another inseq FIN has been received before
1. is not covered yet: I'd cover it by walking the whole ooseq queue to check
we only have one FIN after inserting a segment that contained FIN (in
tcp_receive())
2. is covered in tcp_receive() by binning the whole ooseq queue if
(TCPH_FLAGS(inseg.tcphdr) & TCP_FIN), although we don't check for double FIN
here, we only dump all data after FIN (including a possible 2nd FIN).
3. is difficult to cover: for that, we would need to remember the seqno of
the first FIN. In this case, we rely on the remote side as all data is passed
on to the application in state CLOSE_WAIT (where we already received FIN) -
This might be best solved by returning from tcp_receive() after ACK processing
(i.e. not processing the data).
In any case, we have to decide if we want to *detect* a duplicate ACK and
send RST or only (silently) *ignore* it.
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?28288>
_______________________________________________
Nachricht geschickt von/durch Savannah
http://savannah.nongnu.org/
- [lwip-devel] [bug #28288] Data after FIN in oos queue,
Simon Goldschmidt <=