Fixed bug #26251: RST process in TIME_WAIT TCP state

This commit is contained in:
goldsimon 2009-10-22 13:37:44 +00:00
parent 65d1f52423
commit 18ab274af3
2 changed files with 9 additions and 6 deletions

View File

@ -43,6 +43,9 @@ HISTORY
++ Bugfixes: ++ Bugfixes:
2009-10-22: Simon Goldschmidt
* tcp_in.c: Fixed bug #26251: RST process in TIME_WAIT TCP state
2009-10-21: Simon Goldschmidt 2009-10-21: Simon Goldschmidt
* tcp_in.c: Fixed bug #27215: TCP sent() callback gives leading and * tcp_in.c: Fixed bug #27215: TCP sent() callback gives leading and
trailing 1 byte len (SYN/FIN) trailing 1 byte len (SYN/FIN)

View File

@ -480,14 +480,14 @@ tcp_listen_input(struct tcp_pcb_listen *pcb)
static err_t static err_t
tcp_timewait_input(struct tcp_pcb *pcb) tcp_timewait_input(struct tcp_pcb *pcb)
{ {
if (TCP_SEQ_GT(seqno + tcplen, pcb->rcv_nxt)) { u16_t flags = TCPH_FLAGS(tcphdr);
pcb->rcv_nxt = seqno + tcplen; /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */
} if (((flags & TCP_RST) == 0) && ((flags & TCP_FIN) || (tcplen > 0))) {
if (tcplen > 0) { pcb->flags |= TF_ACK_NOW;
tcp_ack_now(pcb);
}
return tcp_output(pcb); return tcp_output(pcb);
} }
return ERR_OK;
}
/** /**
* Implements the TCP state machine. Called by tcp_input. In some * Implements the TCP state machine. Called by tcp_input. In some