[En-Nut-Discussion] TCP state machine

Krzysztof Sawicki krzysztof.sawicki at mobile.put.edu.pl
Mon Apr 28 11:52:36 CEST 2014

I've got such situation: device with NutOs and GPRS/3G modem. I try to 
establish TCP connection from my PC (PC is client, device with NutOs is 
server). The link is slow, thus SYN packet is sent twice. NutOS's 
response for first SYN is SYN+ACK (this is correct), for second SYN - 
RST. And then session crashes and needs to be established again. Is this 
NutOS's behaviour correct?

I did some tests with another OSes and realized that the best option is 
to ignore duplicated SYNs, as in the following patch:

Index: net/tcpsm.c
--- net/tcpsm.c	(revision 5673)
+++ net/tcpsm.c	(working copy)
@@ -1106,10 +1106,10 @@

-     * Reject SYNs.
+     * Silently discard duplicate SYN
      if (flags & TH_SYN) {
-        NutTcpReject(nb);
+    	NutNetBufFree(nb);

Krzysztof Sawicki
Mobile Systems Research Labs, Poznan University of Technology

More information about the En-Nut-Discussion mailing list