You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@hyperreal.org on 2000/02/01 01:10:14 UTC

cvs commit: apache-2.0/src/lib/apr/network_io/win32 sockopt.c

stoddard    00/01/31 16:10:13

  Modified:    src/lib/apr/network_io/win32 sockopt.c
  Log:
  Add code to set the socket timeout. Correct some error return codes.
  
  Revision  Changes    Path
  1.6       +12 -4     apache-2.0/src/lib/apr/network_io/win32/sockopt.c
  
  Index: sockopt.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/win32/sockopt.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- sockopt.c	1999/10/25 23:55:23	1.5
  +++ sockopt.c	2000/02/01 00:10:12	1.6
  @@ -91,19 +91,27 @@
       else
           one = 0;
   
  +    if (opt & APR_SO_TIMEOUT) {
  +        int timeout = on * 1000;  /* Windows needs timeout in mSeconds */
  +        sock->timeout = timeout;
  +        if (setsockopt(sock->sock, SOL_SOCKET, SO_RCVTIMEO, (char*) &timeout, 
  +                       sizeof(timeout)) == SOCKET_ERROR) {
  +            return WSAGetLastError();
  +        }
  +    }
       if (opt & APR_SO_KEEPALIVE) {
           if (setsockopt(sock->sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
  -            return APR_EEXIST;
  +            return WSAGetLastError();
           }
       }
       if (opt & APR_SO_DEBUG) {
           if (setsockopt(sock->sock, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
  -            return APR_EEXIST;
  +            return WSAGetLastError();
           }
       }
       if (opt & APR_SO_REUSEADDR) {
           if (setsockopt(sock->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
  -            return APR_EEXIST;
  +            return WSAGetLastError();
           }
       }
       if (opt & APR_SO_NONBLOCK) {
  @@ -124,7 +132,7 @@
           }
       }
       return APR_SUCCESS;
  -}         
  +}
   
   ap_status_t ap_gethostname(char *buf, int len, ap_context_t *cont)
   {