Author: mturk
Date: Sat Oct 11 09:02:37 2008
New Revision: 703677

URL: http://svn.apache.org/viewvc?rev=703677&view=rev
Log:
Don't use default socket keepalive interval. If timeout set, use ten times its 
value, if not use 10 minutes for keepalive packets (Windows only)

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_connect.c
    tomcat/connectors/trunk/jk/native/common/jk_global.h

Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_connect.c?rev=703677&r1=703676&r2=703677&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_connect.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_connect.c Sat Oct 11 09:02:37 
2008
@@ -448,6 +448,29 @@
         jk_log(l, JK_LOG_DEBUG,
                "socket TCP_NODELAY set to On");
     if (keepalive) {
+#if defined(WIN32) && !defined(NETWARE)
+        DWORD dw;
+        struct tcp_keepalive ka = { 0 }, ks = { 0 };
+        if (timeout)
+            ka.keepalivetime = timeout * 10000;
+        else
+            ka.keepalivetime = 60 * 10000; /* 10 minutes */
+        ka.keepaliveinterval = 1000;
+        ka.onoff = 1;
+        if (WSAIoctl(sd, SIO_KEEPALIVE_VALS, &ka, sizeof(ka),
+                     &ks, sizeof(ks), &dw, NULL, NULL)) {
+            JK_GET_SOCKET_ERRNO();
+            jk_log(l, JK_LOG_ERROR,
+                   "failed setting SIO_KEEPALIVE_VALS (errno=%d)", errno);
+            jk_close_socket(sd, l);
+            JK_TRACE_EXIT(l);
+            return JK_INVALID_SOCKET;                                          
      
+        }
+        if (JK_IS_DEBUG_LEVEL(l))
+            jk_log(l, JK_LOG_DEBUG,
+                   "socket SO_KEEPALIVE set to %d seconds",
+                   ka.keepalivetime / 1000);
+#else
         set = 1;
         if (setsockopt(sd, SOL_SOCKET, SO_KEEPALIVE, (SET_TYPE)&set,
                        sizeof(set))) {
@@ -461,6 +484,7 @@
         if (JK_IS_DEBUG_LEVEL(l))
             jk_log(l, JK_LOG_DEBUG,
                    "socket SO_KEEPALIVE set to On");
+#endif
     }
 
     if (sock_buf > 0) {

Modified: tomcat/connectors/trunk/jk/native/common/jk_global.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_global.h?rev=703677&r1=703676&r2=703677&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_global.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_global.h Sat Oct 11 09:02:37 
2008
@@ -117,6 +117,7 @@
 #include <winsock2.h>
 #include <mswsock.h>
 #include <ws2tcpip.h>
+#include <mstcpip.h>
 #endif /* _WINDOWS_ */
 #include <sys/timeb.h>
 #include <process.h>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to