++ Bugfixes:
+ 2011-09-27: Simon Goldschmidt
+ * tcp_in.c: fixed bug #28288: Data after FIN in oos queue
+
2011-09-27: Simon Goldschmidt
* dhcp.c: fixed bug #34406 dhcp_option_hostname() can overflow the pbuf
u16_t new_tot_len;
int found_dupack = 0;
+ LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);
+
if (flags & TCP_ACK) {
right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
}
/* If the incoming segment contains data, we must process it
- further. */
- if (tcplen > 0) {
+ further unless the pcb already received a FIN.
+ (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:
+) If the incoming segment contains data that is the next