Commit 0bd51e1c authored by Bill Stoddard's avatar Bill Stoddard
Browse files

Fix a Windows seg fault on startup when multiple listen directives are being used.

The pool pointer in the local address field in apr_sock_t is not initialized until a
request is received.  in general, we should not rely on the addressed in apr_sock_t
when doing work on the listen_recs.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88482 13f79535-47bb-0310-9956-ffa450edef68
parent f291618b
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ static void alloc_listener(process_rec *process, char *addr, apr_port_t port)

    /* see if we've got an old listener for this address:port */
    for (walk = &old_listeners; *walk; walk = &(*walk)->next) {
        apr_socket_addr_get(&sa, APR_LOCAL, (*walk)->sd);
        sa = (*walk)->bind_addr;
        apr_sockaddr_port_get(&oldport, sa);
	apr_sockaddr_ip_get(&oldaddr, sa);
	if (!strcmp(oldaddr, addr) && port == oldport) {
@@ -253,9 +253,6 @@ static void alloc_listener(process_rec *process, char *addr, apr_port_t port)
                     "alloc_listener: failed to get a socket for %s", addr);
        return;
    }
    apr_socket_addr_get(&sa, APR_LOCAL, new->sd);
    apr_sockaddr_port_set(sa, port);
    apr_sockaddr_ip_set(sa, addr);
    new->next = ap_listeners;
    ap_listeners = new;
}