FWIW, somehow this patch breaks Win32 with APR_HAVE_IPV6.

The Apache service named  reported the following error:
>>> [Sat Oct 26 22:45:29 2002] [crit] (OS 11001)No such host is known.  : 
>alloc_listener: failed to set up sockaddr for ::     .

No time to debug now... a dozen overdue assignments.  Just wanted
to pass on a heads up and invite folks to look at this.

Bill

>trawick     2002/10/25 10:15:37
>
>  Modified:    .        CHANGES
>               include/arch/os2 networkio.h
>               include/arch/unix networkio.h
>               include/arch/win32 networkio.h
>               network_io/os2 sockets.c
>               network_io/unix sa_common.c sockaddr.c sockets.c
>               network_io/win32 sockets.c
>  Log:
>  Fix a problem retrieving the remote socket address for sockets
>  created via apr_os_sock_put() or apr_s_sock_make()
>  
>  1.69      +7 -0      apr/network_io/unix/sa_common.c
>  
>  Index: sa_common.c
>  ===================================================================
>  RCS file: /home/cvs/apr/network_io/unix/sa_common.c,v
>  retrieving revision 1.68
>  retrieving revision 1.69
>  diff -u -r1.68 -r1.69
>  --- sa_common.c       15 Oct 2002 12:27:38 -0000      1.68
>  +++ sa_common.c       25 Oct 2002 17:15:37 -0000      1.69
>  @@ -209,6 +209,13 @@
>           *sa = sock->local_addr;
>       }
>       else if (which == APR_REMOTE) {
>  +        if (sock->remote_addr_unknown) {
>  +            apr_status_t rv = get_remote_addr(sock);
>  +
>  +            if (rv != APR_SUCCESS) {
>  +                return rv;
>  +            }
>  +        }
>           *sa = sock->remote_addr;
>       }
>       else {
>  
>  1.91      +4 -0      apr/network_io/win32/sockets.c
>  
>  Index: sockets.c
>  ===================================================================
>  RCS file: /home/cvs/apr/network_io/win32/sockets.c,v
>  retrieving revision 1.90
>  retrieving revision 1.91
>  diff -u -r1.90 -r1.91
>  --- sockets.c 22 Oct 2002 03:35:47 -0000      1.90
>  +++ sockets.c 25 Oct 2002 17:15:37 -0000      1.91
>  @@ -451,6 +451,9 @@
>           /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
>           (*apr_sock)->remote_addr->port = 
>ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
>       }
>  +    else {
>  +        (*apr_sock)->remote_addr_unknown = 1;
>  +    }
>           
>       apr_pool_cleanup_register((*apr_sock)->cntxt, (void *)(*apr_sock), 
>                           socket_cleanup, apr_pool_cleanup_null);
>  @@ -471,6 +474,7 @@
>           (*sock)->disconnected = 0;
>       }
>       (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
>  +    (*sock)->remote_addr_unknown = 1;
>       (*sock)->socketdes = *thesock;
>       return APR_SUCCESS;
>   }

Reply via email to