[Spread-cvs] commit: r452 - in trunk: daemon libspread

jschultz at spread.org jschultz at spread.org
Mon Jan 9 12:54:26 EST 2012


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 <jschultz at spreadconcepts.com>
 
+	* sp.c, session.c: Added SO_KEEPALIVE to client sessions.
+
 Mon Jan  9 00:35:02 2012  Jonathan Stanton  <jonathan at spreadconcepts.com>
 
 	* 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) );




More information about the Spread-cvs mailing list