Bugfix: if a SYN is received in the SYN_RCVD state we should not send a blank SYN, but a SYNACK in response.

This commit is contained in:
Adam Dunkels 2013-11-22 15:37:21 +01:00
parent 6265219775
commit f31d6f271f

View file

@ -1833,8 +1833,12 @@ uip_process(uint8_t flag)
UIP_TCP_BUF->seqno[2] != uip_connr->rcv_nxt[2] || UIP_TCP_BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
UIP_TCP_BUF->seqno[3] != uip_connr->rcv_nxt[3])) { UIP_TCP_BUF->seqno[3] != uip_connr->rcv_nxt[3])) {
if(UIP_TCP_BUF->flags & TCP_SYN) { if((UIP_TCP_BUF->flags & TCP_SYN)) {
goto tcp_send_synack; if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_RCVD) {
goto tcp_send_synack;
} else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) {
goto tcp_send_syn;
}
} }
goto tcp_send_ack; goto tcp_send_ack;
} }