summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Stoddard <stoddard@apache.org>2004-02-29 14:47:02 +0100
committerBill Stoddard <stoddard@apache.org>2004-02-29 14:47:02 +0100
commit547f7e0f1d081e299b144f10cce5e2b89e571f93 (patch)
tree9c4d96564ae4b7ec115894bb1c8eca4de3026e81
parent* Makefile.in: Link httpd against user-supplied $(LIBS). (diff)
downloadapache2-547f7e0f1d081e299b144f10cce5e2b89e571f93.tar.xz
apache2-547f7e0f1d081e299b144f10cce5e2b89e571f93.zip
Win32: find_read_listeners was not correctly handling multiple listeners on the Win32DisableAcceptEx path
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102823 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--server/mpm/winnt/child.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/server/mpm/winnt/child.c b/server/mpm/winnt/child.c
index 5c943a211b..2110b68e00 100644
--- a/server/mpm/winnt/child.c
+++ b/server/mpm/winnt/child.c
@@ -206,16 +206,21 @@ static APR_INLINE ap_listen_rec *find_ready_listener(fd_set * main_fds)
ap_listen_rec *lr;
SOCKET nsd;
- for (lr = head_listener; lr ; lr = lr->next) {
+ lr = head_listener;
+ do {
apr_os_sock_get(&nsd, lr->sd);
- if (FD_ISSET(nsd, main_fds)) {
- head_listener = lr->next;
- if (head_listener == NULL)
+ if (FD_ISSET(nsd, main_fds)) {
+ head_listener = lr->next;
+ if (!head_listener) {
head_listener = ap_listeners;
-
- return (lr);
- }
- }
+ }
+ return lr;
+ }
+ lr = lr->next;
+ if (!lr) {
+ lr = ap_listeners;
+ }
+ } while (lr != head_listener);
return NULL;
}
@@ -333,6 +338,8 @@ static void win9x_accept(void * dummy)
if (listenmaxfd == INVALID_SOCKET || nsd > listenmaxfd) {
listenmaxfd = nsd;
}
+ ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, ap_server_conf,
+ "Child %d: Listening on port %d.", my_pid, lr->bind_addr->port);
}
}