mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-11-16 23:15:37 +00:00
fixed bug #28288: Data after FIN in oos queue
This commit is contained in:
parent
9c3a6b828f
commit
eff10f6458
@ -45,6 +45,9 @@ HISTORY
|
|||||||
|
|
||||||
++ Bugfixes:
|
++ Bugfixes:
|
||||||
|
|
||||||
|
2011-09-27: Simon Goldschmidt
|
||||||
|
* tcp_in.c: fixed bug #28288: Data after FIN in oos queue
|
||||||
|
|
||||||
2011-09-27: Simon Goldschmidt
|
2011-09-27: Simon Goldschmidt
|
||||||
* dhcp.c: fixed bug #34406 dhcp_option_hostname() can overflow the pbuf
|
* dhcp.c: fixed bug #34406 dhcp_option_hostname() can overflow the pbuf
|
||||||
|
|
||||||
|
@ -887,6 +887,8 @@ tcp_receive(struct tcp_pcb *pcb)
|
|||||||
u16_t new_tot_len;
|
u16_t new_tot_len;
|
||||||
int found_dupack = 0;
|
int found_dupack = 0;
|
||||||
|
|
||||||
|
LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);
|
||||||
|
|
||||||
if (flags & TCP_ACK) {
|
if (flags & TCP_ACK) {
|
||||||
right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
|
right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
|
||||||
|
|
||||||
@ -1120,8 +1122,10 @@ tcp_receive(struct tcp_pcb *pcb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* If the incoming segment contains data, we must process it
|
/* If the incoming segment contains data, we must process it
|
||||||
further. */
|
further unless the pcb already received a FIN.
|
||||||
if (tcplen > 0) {
|
(RFC 793, chapeter 3.9, "SEGMENT ARRIVES" in states CLOSE-WAIT, CLOSING,
|
||||||
|
LAST-ACK and TIME-WAIT: "Ignore the segment text.") */
|
||||||
|
if ((tcplen > 0) && (pcb->state < CLOSE_WAIT)) {
|
||||||
/* This code basically does three things:
|
/* This code basically does three things:
|
||||||
|
|
||||||
+) If the incoming segment contains data that is the next
|
+) If the incoming segment contains data that is the next
|
||||||
|
Loading…
Reference in New Issue
Block a user