stoddard 00/02/14 06:28:17
Modified: src/modules/mpm/winnt winnt.c
Log:
Enable Windows MPM to run in single process mode
Submitted by: Allan Edwards
Reviewed by: Bill Stoddard
Revision Changes Path
1.38 +20 -0 apache-2.0/src/modules/mpm/winnt/winnt.c
Index: winnt.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/modules/mpm/winnt/winnt.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- winnt.c 2000/02/01 00:34:05 1.37
+++ winnt.c 2000/02/14 14:28:16 1.38
@@ -1237,7 +1237,16 @@
/* Setup the listening sockets */
if (one_process) {
+ ap_listen_rec *lr;
setup_listeners(server_conf);
+
+ /* Associate the socket with the IO Completion port */
+ for (lr = ap_listeners; lr; lr = lr->next) {
+ int nsd;
+ ap_get_os_sock(&nsd,lr->sd);
+ CreateIoCompletionPort((HANDLE) nsd, AcceptExCompPort, 0, 0);
+ }
+
} else {
setup_inherited_listeners(server_conf);
}
@@ -1745,7 +1754,18 @@
AMCSocketInitialize();
exit_event_name = ap_psprintf(pconf, "apC%d", my_pid);
setup_signal_names(ap_psprintf(pconf,"ap%d", parent_pid));
+
if (one_process) {
+ /* Create the IO CompletionPort */
+ if (AcceptExCompPort == NULL) {
+ AcceptExCompPort =
CreateIoCompletionPort(INVALID_HANDLE_VALUE,
+ NULL, 0, 0);
+ if (AcceptExCompPort == NULL) {
+ ap_log_error(APLOG_MARK,APLOG_ERR, GetLastError(),
server_conf,
+ "Unable to create the
AcceptExCompletionPort -- process will exit");
+ return -1;
+ }
+ }
ap_create_lock(&start_mutex,APR_MUTEX,
APR_CROSS_PROCESS,signal_name_prefix,pconf);
exit_event = CreateEvent(NULL, TRUE, FALSE, exit_event_name);
}