[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [bug #49631] Zero window and refused data problem
From: |
Joel Cunningham |
Subject: |
[lwip-devel] [bug #49631] Zero window and refused data problem |
Date: |
Mon, 28 Nov 2016 18:12:13 +0000 (UTC) |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0 |
Follow-up Comment #3, bug #49631 (project lwip):
Simon,
I'm not sure that removing refused_data would fix Oleg's problem because the
data being dropped isn't a normal data segment, but instead a zero window
probe and dropping that will lead to a connection closure (dropping a normal
data segment would also lead to connection closure after all retransmissions
have been sent and dropped)
If we had the following sequence, we'd still need an ACK containing RCV.NEXT
1. LwIP receiver closes window
2. Application reads < 1 MSS of data (no window update sent, but some space
now open)
3. Sender sends 1 byte zero window probe
4. LwIP accepts and ACKs probe (advancing RCV.NEXT by 1)
5. Steps 3/4 repeat until application refuses new 1 byte data
6. LwIP silently drops window probe
Step 6 should instead be, zero-window probe data is not passed to application
and ACK containing current RCV.NEXT is sent
Maybe another way to fix this issue would be to not accept data when the
*advertised* window is closed rcv_ann_wnd == 0 (true when 0 <= rcv_wnd < MIN(
1 MSS, TCP_WND / 2)). Then the zero window probe would follow the same path
as when rcv_wnd is actually 0. A receiving TCP doesn't have to buffer the
probe even if there is window space but the advertised window is still closed
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?49631>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/