]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Fix a Windows seg fault on startup when multiple listen directives are being used.
authorBill Stoddard <stoddard@apache.org>
Fri, 9 Mar 2001 18:28:55 +0000 (18:28 +0000)
committerBill Stoddard <stoddard@apache.org>
Fri, 9 Mar 2001 18:28:55 +0000 (18:28 +0000)
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

server/listen.c

index 9c1b023e22e254075167045d11ae5441fd81e543..5b26326842082c4de3f4a6fc1b67f72c4cd656bf 100644 (file)
@@ -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;
 }