mturk       2005/02/20 00:15:33

  Modified:    jk/native/common jk_connect.c
  Log:
  Disable lingering on socket. This way the socket will be hard closed without
  waiting for delivery of remaining data.
  
  Revision  Changes    Path
  1.44      +19 -3     jakarta-tomcat-connectors/jk/native/common/jk_connect.c
  
  Index: jk_connect.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_connect.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- jk_connect.c      19 Feb 2005 09:13:35 -0000      1.43
  +++ jk_connect.c      20 Feb 2005 08:15:33 -0000      1.44
  @@ -126,7 +126,10 @@
       char buf[32];
       int sock;
       int set = 1;
  -    int ret;
  +    int ret = 0;
  +#ifdef SO_LINGER
  +    struct linger li;
  +#endif
   
       JK_TRACE_ENTER(l);
   
  @@ -215,7 +218,7 @@
        * systems?
       */
       set = 1;
  -    if (setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (const char *)&set,
  +    if (setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, (const char *)&set,
                      sizeof(int))) {
           JK_GET_SOCKET_ERRNO();
           jk_log(l, JK_LOG_ERROR,
  @@ -225,6 +228,19 @@
           return -1;
       }
   #endif
  +#ifdef SO_LINGER
  +    /* Make hard closesocket by disabling lingering */
  +    li.l_linger = li.l_onoff = 0;
  +    if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (const char *)&li,
  +                   sizeof(li))) {
  +        JK_GET_SOCKET_ERRNO();
  +        jk_log(l, JK_LOG_ERROR,
  +                "failed setting SO_LINGER with errno=%d", errno);
  +        jk_close_socket(sock);
  +        JK_TRACE_EXIT(l);
  +        return -1;
  +    }
  +#endif
       /* Tries to connect to Tomcat (continues trying while error is EINTR) */
       do {
           if (JK_IS_DEBUG_LEVEL(l))
  
  
  

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

Reply via email to