You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@locus.apache.org on 2000/06/10 04:02:47 UTC

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

dgaudet     00/06/09 19:02:46

  Modified:    src/lib/apr/network_io/unix sockets.c sockopt.c
  Log:
  - don't call fcntl more than once for the socket
  - accepted socket timeouts start at -1 just like sockets created by other
    means
  
  Revision  Changes    Path
  1.46      +1 -0      apache-2.0/src/lib/apr/network_io/unix/sockets.c
  
  Index: sockets.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/sockets.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- sockets.c	2000/05/23 05:49:27	1.45
  +++ sockets.c	2000/06/10 02:02:44	1.46
  @@ -154,6 +154,7 @@
   #ifndef HAVE_POLL
       (*new)->connected = 1;
   #endif
  +    (*new)->timeout = -1;
   
       (*new)->socketdes = accept(sock->socketdes, (struct sockaddr *)(*new)->remote_addr,
                           &(*new)->addr_len);
  
  
  
  1.26      +8 -2      apache-2.0/src/lib/apr/network_io/unix/sockopt.c
  
  Index: sockopt.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/sockopt.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- sockopt.c	2000/05/16 20:35:39	1.25
  +++ sockopt.c	2000/06/10 02:02:45	1.26
  @@ -155,10 +155,16 @@
           }
       }
       if (opt & APR_SO_TIMEOUT) {
  -        sock->timeout = on;
  -        if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) {
  +	/* don't do the fcntl foo more than needed */
  +	if (on >= 0 && sock->timeout < 0
  +		&& (stat = sononblock(sock->socketdes)) != APR_SUCCESS) {
               return stat;
           }
  +	else if (on < 0 && sock->timeout >= 0
  +		&& (stat = soblock(sock->socketdes)) != APR_SUCCESS) {
  +	    return stat;
  +	}
  +        sock->timeout = on;
       }
       return APR_SUCCESS;
   }