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; > }