On Sun, 2007-09-16 at 20:39 +0100, bert wrote:
> So according to the output, all is well until it gets here:
> 
> status = listensocks[offset].accept_func((void *)&sock, &listensocks 
> [offset], ptrans);
> 
> which seems to call receive_from_multiplexer to re-populate the sock  
> structure...
> it seems somewhere within this function, the information about the  
> original connection is not being passed over correctly.

Maybe it's earlier, when the listensocks array is being created:

/* Set up the pollfd array */
listensocks = apr_pcalloc(pchild,
                        sizeof(*listensocks) * (num_listensocks));
for (lr = ap_listeners, i = 0; i < num_listensocks; lr = lr->next, i++)
{
    listensocks[i].accept_func = lr->accept_func;
    listensocks[i].sd = lr->sd;
}

It's copying over lr->accept_func and lr->sd, but not lr->bind_addr - an
apr_sockaddr_t object.  Could this be the culprit?  Try the attached
patch and let me know if that does anything.  I'm running with it now,
and nothing's broken, but I've never been able to reproduce the 0.0.0.0
problem so I don't know if has fixed anything.

If it works, I'll make a new release with this and Rommer's patch from
earlier today and call it version 0.3.0 :)

-- 
Sean Gabriel Heacock
Telana Internet Services
http://www.telana.com/
--- peruser.c   (revision 29)
+++ peruser.c   (working copy)
@@ -1590,6 +1590,7 @@
     for (lr = ap_listeners, i = 0; i < num_listensocks; lr = lr->next, i++) {
         listensocks[i].accept_func = lr->accept_func;
         listensocks[i].sd = lr->sd;
+        listensocks[i].bind_addr = lr->bind_addr;
     }
 
     pollset = apr_palloc(pchild, sizeof(*pollset) * num_listensocks);
_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

Reply via email to