Index: tcp_in.c =================================================================== RCS file: lwip/src/core/tcp_in.c,v retrieving revision 1.2 diff -u -r1.2 tcp_in.c --- tcp_in.c 5 Mar 2004 03:36:30 -0000 1.2 +++ tcp_in.c 16 Mar 2004 06:07:04 -0000 @@ -540,8 +540,16 @@ case SYN_SENT: LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %lu pcb->snd_nxt %lu unacked %lu\n", ackno, pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno))); - if ((flags & TCP_ACK) && (flags & TCP_SYN) - && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) { + if (flags & (TCP_ACK | TCP_SYN)) + { + if ( ackno != ntohl(pcb->unacked->tcphdr->seqno) + 1) { + tcp_rst( ackno, ackno, &(pcb->local_ip), &(pcb->remote_ip), pcb->local_port, pcb->remote_port); + return ERR_OK; + } + } else + { + return ERR_OK; + } pcb->rcv_nxt = seqno + 1; pcb->lastack = ackno; pcb->snd_wnd = tcphdr->wnd; @@ -561,7 +569,6 @@ * connected. */ TCP_EVENT_CONNECTED(pcb, ERR_OK, err); tcp_ack(pcb); - } break; case SYN_RCVD: if (flags & TCP_ACK &&