[En-Nut-Discussion] TCP connect timeout added

Ole Reinhardt ole.reinhardt at embedded-it.de
Fri Jan 10 18:43:16 CET 2014

Hi all,

I added a configurable timeout to NutTcpConnect() in SVN trunk rev. 5542

The socket write timeout is used for this purpose:


uint32_t timeout = 5;
NutTcpSetSockOpt(sock, SO_SNDTIMEO, &timeout, sizeof(timeout));

if ((rc = NutTcpConnect(sock, rip, INETSERVERPORT)) == 0) {
   /* Reset the write timeout to infinite (or to whatever,
      for further communication.
   timeout = 0;
   NutTcpSetSockOpt(sock, SO_SNDTIMEO, &timeout, sizeof(timeout));

   /* Do something here */

} else {

    if (NutTcpError(sock) == ETIMEDOUT) {
	/* Timeout on connect */
    } else {
        /* Connection refused */


Please note:

Make sure, that you always call NutTcpCloseSocket(), even if
NutTcpConnect() returned a timeout.

I intensively tested this feature in a long term test with in total
50mio connections. These tests showed up the TCP statemachine race
condition I reported in my last mail. Beside if this, I did my best to
avoid any bad side-effects.

However, please also review this code :-)

Best regards,

Ole Reinhardt

kernel concepts GmbH            Tel: +49-271-771091-14
Sieghuetter Hauptweg 48         Mob: +49-177-7420433
D-57072 Siegen

More information about the En-Nut-Discussion mailing list