commit: r452 - in trunk: daemon libspread
[email protected] Mon, 09 Jan 2012 12:54:26 -0500
| Newsgroups | gmane.network.spread.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: jschultz Date: 2012-01-09 12:54:25 -0500 (Mon, 09 Jan 2012) New Revision: 452 Modified: trunk/daemon/Changelog trunk/daemon/session.c trunk/libspread/sp.c Log: SO_KEEPALIVE for client sessions patch. Modified: trunk/daemon/Changelog =================================================================== --- trunk/daemon/Changelog 2012-01-09 05:53:22 UTC (rev 451) +++ trunk/daemon/Changelog 2012-01-09 17:54:25 UTC (rev 452) @@ -1,4 +1,7 @@ +Mon Jan 9 12:52:10 2012 John Schultz <[email protected]> + * sp.c, session.c: Added SO_KEEPALIVE to client sessions. + Mon Jan 9 00:35:02 2012 Jonathan Stanton <[email protected]> * SpreadConnection.java (run.listeners): Fix several potential Modified: trunk/daemon/session.c =================================================================== --- trunk/daemon/session.c 2012-01-09 05:53:22 UTC (rev 451) +++ trunk/daemon/session.c 2012-01-09 17:54:25 UTC (rev 452) @@ -596,11 +596,18 @@ if ( domain == AF_INET ) { on = 1; - ret = setsockopt( Sessions[MAX_SESSIONS].mbox, IPPROTO_TCP, TCP_NODELAY, (void *)&on, 4); + ret = setsockopt( Sessions[MAX_SESSIONS].mbox, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(on) ); if (ret < 0) - Alarm(PRINT, "Setting TCP_NODELAY failed with error: %s\n", sock_strerror(sock_errno)); + Alarm(PRINT, "Setting TCP_NODELAY failed with error: %s\n", sock_strerror(sock_errno)); else Alarm( SESSION, "Setting TCP_NODELAY on socket %d\n", Sessions[MAX_SESSIONS].mbox ); + + on = 1; + ret = setsockopt( Sessions[MAX_SESSIONS].mbox, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on) ); + if (ret < 0) + Alarm(PRINT, "Setting SO_KEEPALIVE failed with error: %s\n", sock_strerror(sock_errno)); + else + Alarm( SESSION, "Setting SO_KEEPALIVE on socket %d\n", Sessions[MAX_SESSIONS].mbox ); } /* delaying for the private name to be written */ Sess_detach_accept(); Modified: trunk/libspread/sp.c =================================================================== --- trunk/libspread/sp.c 2012-01-09 05:53:22 UTC (rev 451) +++ trunk/libspread/sp.c 2012-01-09 17:54:25 UTC (rev 452) @@ -665,12 +665,19 @@ set_large_socket_buffers(s); on = 1; - ret = setsockopt( s, IPPROTO_TCP, TCP_NODELAY, (void *)&on, 4); + ret = setsockopt( s, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(on) ); if (ret < 0) - Alarm(PRINT, "Setting TCP_NODELAY failed with error: %s\n", sock_strerror(sock_errno)); + Alarm(PRINT, "Setting TCP_NODELAY failed with error: %s\n", sock_strerror(sock_errno)); else Alarm( SESSION, "SP_connect: set TCP_NODELAY for socket %d\n", s); + on = 1; + ret = setsockopt( s, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on) ); + if (ret < 0) + Alarm(PRINT, "Setting SO_KEEPALIVE failed with error: %s\n", sock_strerror(sock_errno)); + else + Alarm( SESSION, "SP_connect: set SO_KEEPALIVE for socket %d\n", s); + inet_addr.sin_family = AF_INET; inet_addr.sin_port = htons( port ); memcpy( &inet_addr.sin_addr, &host_address, sizeof(int32) );