diff options
Diffstat (limited to 'server/mpm/winnt/mpm_winnt.c')
-rw-r--r-- | server/mpm/winnt/mpm_winnt.c | 306 |
1 files changed, 153 insertions, 153 deletions
diff --git a/server/mpm/winnt/mpm_winnt.c b/server/mpm/winnt/mpm_winnt.c index a52ada80ad..3c8bc9ec63 100644 --- a/server/mpm/winnt/mpm_winnt.c +++ b/server/mpm/winnt/mpm_winnt.c @@ -16,12 +16,12 @@ #ifdef WIN32 -#define CORE_PRIVATE -#include "httpd.h" -#include "http_main.h" -#include "http_log.h" -#include "http_config.h" /* for read_config */ -#include "http_core.h" /* for get_remote_host */ +#define CORE_PRIVATE +#include "httpd.h" +#include "http_main.h" +#include "http_log.h" +#include "http_config.h" /* for read_config */ +#include "http_core.h" /* for get_remote_host */ #include "http_connection.h" #include "apr_portable.h" #include "apr_thread_proc.h" @@ -71,7 +71,7 @@ int winnt_mpm_state = AP_MPMQ_STARTING; ap_generation_t volatile ap_my_generation=0; -/* shared by service.c as global, although +/* shared by service.c as global, although * perhaps it should be private. */ apr_pool_t *pconf; @@ -85,7 +85,7 @@ void child_main(apr_pool_t *pconf); * so they ultimately should not be shared with child.c */ extern apr_proc_mutex_t *start_mutex; -extern HANDLE exit_event; +extern HANDLE exit_event; /* Stub functions until this MPM supports the connection status API */ @@ -107,11 +107,11 @@ AP_DECLARE(apr_array_header_t *) ap_get_status_table(apr_pool_t *p) return NULL; } -/* - * Command processors +/* + * Command processors */ -static const char *set_threads_per_child (cmd_parms *cmd, void *dummy, char *arg) +static const char *set_threads_per_child (cmd_parms *cmd, void *dummy, char *arg) { const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); if (err != NULL) { @@ -120,28 +120,28 @@ static const char *set_threads_per_child (cmd_parms *cmd, void *dummy, char *arg ap_threads_per_child = atoi(arg); if (ap_threads_per_child > thread_limit) { - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "WARNING: ThreadsPerChild of %d exceeds ThreadLimit " - "value of %d threads,", ap_threads_per_child, + "value of %d threads,", ap_threads_per_child, thread_limit); ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " lowering ThreadsPerChild to %d. To increase, please" " see the", thread_limit); - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " ThreadLimit directive."); ap_threads_per_child = thread_limit; } else if (ap_threads_per_child < 1) { - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "WARNING: Require ThreadsPerChild > 0, setting to 1"); ap_threads_per_child = 1; } return NULL; } -static const char *set_thread_limit (cmd_parms *cmd, void *dummy, const char *arg) +static const char *set_thread_limit (cmd_parms *cmd, void *dummy, const char *arg) { int tmp_thread_limit; - + const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); if (err != NULL) { return err; @@ -161,23 +161,23 @@ static const char *set_thread_limit (cmd_parms *cmd, void *dummy, const char *ar return NULL; } thread_limit = tmp_thread_limit; - + if (thread_limit > MAX_THREAD_LIMIT) { - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "WARNING: ThreadLimit of %d exceeds compile time limit " "of %d threads,", thread_limit, MAX_THREAD_LIMIT); - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, " lowering ThreadLimit to %d.", MAX_THREAD_LIMIT); thread_limit = MAX_THREAD_LIMIT; - } + } else if (thread_limit < 1) { - ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, NULL, "WARNING: Require ThreadLimit > 0, setting to 1"); thread_limit = 1; } return NULL; } -static const char *set_disable_acceptex(cmd_parms *cmd, void *dummy, char *arg) +static const char *set_disable_acceptex(cmd_parms *cmd, void *dummy, char *arg) { const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY); if (err != NULL) { @@ -185,7 +185,7 @@ static const char *set_disable_acceptex(cmd_parms *cmd, void *dummy, char *arg) } if (use_acceptex) { use_acceptex = 0; - ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, NULL, + ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, NULL, "Disabled use of AcceptEx() WinSock2 API"); } return NULL; @@ -229,24 +229,24 @@ AP_INIT_NO_ARGS("Win32DisableAcceptEx", set_disable_acceptex, NULL, RSRC_CONF, * It can be called by any child or parent process, since it does not * rely on global variables. * - * On entry, type gives the event to signal. 0 means shutdown, 1 means + * On entry, type gives the event to signal. 0 means shutdown, 1 means * graceful restart. */ /* - * Initialise the signal names, in the global variables signal_name_prefix, + * Initialise the signal names, in the global variables signal_name_prefix, * signal_restart_name and signal_shutdown_name. */ #define MAX_SIGNAL_NAME 30 /* Long enough for apPID_shutdown, where PID is an int */ char signal_name_prefix[MAX_SIGNAL_NAME]; -char signal_restart_name[MAX_SIGNAL_NAME]; +char signal_restart_name[MAX_SIGNAL_NAME]; char signal_shutdown_name[MAX_SIGNAL_NAME]; void setup_signal_names(char *prefix) { - apr_snprintf(signal_name_prefix, sizeof(signal_name_prefix), prefix); - apr_snprintf(signal_shutdown_name, sizeof(signal_shutdown_name), - "%s_shutdown", signal_name_prefix); - apr_snprintf(signal_restart_name, sizeof(signal_restart_name), - "%s_restart", signal_name_prefix); + apr_snprintf(signal_name_prefix, sizeof(signal_name_prefix), prefix); + apr_snprintf(signal_shutdown_name, sizeof(signal_shutdown_name), + "%s_shutdown", signal_name_prefix); + apr_snprintf(signal_restart_name, sizeof(signal_restart_name), + "%s_restart", signal_name_prefix); } int volatile is_graceful = 0; @@ -260,20 +260,20 @@ AP_DECLARE(void) ap_signal_parent(ap_signal_parent_e type) { HANDLE e; char *signal_name; - + if (parent_pid == my_pid) { switch(type) { - case SIGNAL_PARENT_SHUTDOWN: + case SIGNAL_PARENT_SHUTDOWN: { - SetEvent(shutdown_event); + SetEvent(shutdown_event); break; } /* This MPM supports only graceful restarts right now */ - case SIGNAL_PARENT_RESTART: + case SIGNAL_PARENT_RESTART: case SIGNAL_PARENT_RESTART_GRACEFUL: { is_graceful = 1; - SetEvent(restart_event); + SetEvent(restart_event); break; } } @@ -281,20 +281,20 @@ AP_DECLARE(void) ap_signal_parent(ap_signal_parent_e type) } switch(type) { - case SIGNAL_PARENT_SHUTDOWN: + case SIGNAL_PARENT_SHUTDOWN: { - signal_name = signal_shutdown_name; + signal_name = signal_shutdown_name; break; } /* This MPM supports only graceful restarts right now */ - case SIGNAL_PARENT_RESTART: + case SIGNAL_PARENT_RESTART: case SIGNAL_PARENT_RESTART_GRACEFUL: { - signal_name = signal_restart_name; + signal_name = signal_restart_name; is_graceful = 1; break; } - default: + default: return; } @@ -337,7 +337,7 @@ void get_handles_from_parent(server_rec *s, HANDLE *child_exit_event, DWORD BytesRead; void *sb_shared; apr_status_t rv; - + pipe = GetStdHandle(STD_INPUT_HANDLE); if (!ReadFile(pipe, &ready_event, sizeof(HANDLE), &BytesRead, (LPOVERLAPPED) NULL) @@ -381,7 +381,7 @@ void get_handles_from_parent(server_rec *s, HANDLE *child_exit_event, exit(APEXIT_CHILDINIT); } *scoreboard_shm = NULL; - if ((rv = apr_os_shm_put(scoreboard_shm, &hScore, s->process->pool)) + if ((rv = apr_os_shm_put(scoreboard_shm, &hScore, s->process->pool)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, ap_server_conf, "Child %d: Unable to access the scoreboard from the parent", my_pid); @@ -390,7 +390,7 @@ void get_handles_from_parent(server_rec *s, HANDLE *child_exit_event, rv = ap_reopen_scoreboard(s->process->pool, scoreboard_shm, 1); if (rv || !(sb_shared = apr_shm_baseaddr_get(*scoreboard_shm))) { - ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, + ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL, "Child %d: Unable to reopen the scoreboard from the parent", my_pid); exit(APEXIT_CHILDINIT); } @@ -404,12 +404,12 @@ void get_handles_from_parent(server_rec *s, HANDLE *child_exit_event, } -static int send_handles_to_child(apr_pool_t *p, +static int send_handles_to_child(apr_pool_t *p, HANDLE child_ready_event, - HANDLE child_exit_event, + HANDLE child_exit_event, apr_proc_mutex_t *child_start_mutex, apr_shm_t *scoreboard_shm, - HANDLE hProcess, + HANDLE hProcess, apr_file_t *child_in) { apr_status_t rv; @@ -484,7 +484,7 @@ static int send_handles_to_child(apr_pool_t *p, } -/* +/* * get_listeners_from_parent() * The listen sockets are opened in the parent. This function, which runs * exclusively in the child process, receives them from the parent and @@ -514,7 +514,7 @@ void get_listeners_from_parent(server_rec *s) pipe = GetStdHandle(STD_INPUT_HANDLE); for (lr = ap_listeners; lr; lr = lr->next, ++lcnt) { - if (!ReadFile(pipe, &WSAProtocolInfo, sizeof(WSAPROTOCOL_INFO), + if (!ReadFile(pipe, &WSAProtocolInfo, sizeof(WSAPROTOCOL_INFO), &BytesRead, (LPOVERLAPPED) NULL)) { ap_log_error(APLOG_MARK, APLOG_CRIT, apr_get_os_error(), ap_server_conf, "setup_inherited_listeners: Unable to read socket data from parent"); @@ -531,15 +531,15 @@ void get_listeners_from_parent(server_rec *s) if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { HANDLE hProcess = GetCurrentProcess(); HANDLE dup; - if (DuplicateHandle(hProcess, (HANDLE) nsd, hProcess, &dup, + if (DuplicateHandle(hProcess, (HANDLE) nsd, hProcess, &dup, 0, FALSE, DUPLICATE_SAME_ACCESS)) { closesocket(nsd); nsd = (SOCKET) dup; } } else { - /* A different approach. Many users report errors such as - * (32538)An operation was attempted on something that is not + /* A different approach. Many users report errors such as + * (32538)An operation was attempted on something that is not * a socket. : Parent: WSADuplicateSocket failed... * * This appears that the duplicated handle is no longer recognized @@ -560,7 +560,7 @@ void get_listeners_from_parent(server_rec *s) } -static int send_listeners_to_child(apr_pool_t *p, DWORD dwProcessId, +static int send_listeners_to_child(apr_pool_t *p, DWORD dwProcessId, apr_file_t *child_in) { apr_status_t rv; @@ -569,8 +569,8 @@ static int send_listeners_to_child(apr_pool_t *p, DWORD dwProcessId, LPWSAPROTOCOL_INFO lpWSAProtocolInfo; apr_size_t BytesWritten; - /* Run the chain of open sockets. For each socket, duplicate it - * for the target process then send the WSAPROTOCOL_INFO + /* Run the chain of open sockets. For each socket, duplicate it + * for the target process then send the WSAPROTOCOL_INFO * (returned by dup socket) to the child. */ for (lr = ap_listeners; lr; lr = lr->next, ++lcnt) { @@ -578,7 +578,7 @@ static int send_listeners_to_child(apr_pool_t *p, DWORD dwProcessId, lpWSAProtocolInfo = apr_pcalloc(p, sizeof(WSAPROTOCOL_INFO)); apr_os_sock_get(&nsd,lr->sd); ap_log_error(APLOG_MARK, APLOG_INFO, APR_SUCCESS, ap_server_conf, - "Parent: Duplicating socket %d and sending it to child process %d", + "Parent: Duplicating socket %d and sending it to child process %d", nsd, dwProcessId); if (WSADuplicateSocket(nsd, dwProcessId, lpWSAProtocolInfo) == SOCKET_ERROR) { @@ -587,7 +587,7 @@ static int send_listeners_to_child(apr_pool_t *p, DWORD dwProcessId, return -1; } - if ((rv = apr_file_write_full(child_in, lpWSAProtocolInfo, + if ((rv = apr_file_write_full(child_in, lpWSAProtocolInfo, sizeof(WSAPROTOCOL_INFO), &BytesWritten)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, ap_server_conf, @@ -606,10 +606,10 @@ enum waitlist_e { waitlist_term = 1 }; -static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_event, +static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_event, DWORD *child_pid) { - /* These NEVER change for the lifetime of this parent + /* These NEVER change for the lifetime of this parent */ static char **args = NULL; static char **env = NULL; @@ -629,7 +629,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ apr_pool_create_ex(&ptemp, p, NULL, NULL); /* Build the command line. Should look something like this: - * C:/apache/bin/apache.exe -f ap_server_confname + * C:/apache/bin/apache.exe -f ap_server_confname * First, get the path to the executable... */ apr_procattr_create(&attr, ptemp); @@ -642,20 +642,20 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ } if (!args) { - /* Build the args array, only once since it won't change + /* Build the args array, only once since it won't change * for the lifetime of this parent process. */ if ((rv = ap_os_proc_filepath(&cmd, ptemp)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, ERROR_BAD_PATHNAME, ap_server_conf, - "Parent: Failed to get full path of %s", + "Parent: Failed to get full path of %s", ap_server_conf->process->argv[0]); apr_pool_destroy(ptemp); return -1; } - + args = malloc((ap_server_conf->process->argc + 1) * sizeof (char*)); - memcpy(args + 1, ap_server_conf->process->argv + 1, + memcpy(args + 1, ap_server_conf->process->argv + 1, (ap_server_conf->process->argc - 1) * sizeof (char*)); args[0] = malloc(strlen(cmd) + 1); strcpy(args[0], cmd); @@ -666,7 +666,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ } /* Create a pipe to send handles to the child */ - if ((rv = apr_procattr_io_set(attr, APR_FULL_BLOCK, + if ((rv = apr_procattr_io_set(attr, APR_FULL_BLOCK, APR_NO_PIPE, APR_NO_PIPE)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, ap_server_conf, "Parent: Unable to create child stdin pipe."); @@ -675,9 +675,9 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ } /* Open a null handle to soak info from the child */ - if (((rv = apr_file_open(&child_out, "NUL", APR_READ | APR_WRITE, + if (((rv = apr_file_open(&child_out, "NUL", APR_READ | APR_WRITE, APR_OS_DEFAULT, ptemp)) != APR_SUCCESS) - || ((rv = apr_procattr_child_out_set(attr, child_out, NULL)) + || ((rv = apr_procattr_child_out_set(attr, child_out, NULL)) != APR_SUCCESS)) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, ap_server_conf, "Parent: Unable to connect child stdout to NUL."); @@ -685,7 +685,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ return -1; } - /* Connect the child's initial stderr to our main server error log + /* Connect the child's initial stderr to our main server error log * or share our own stderr handle. */ if (ap_server_conf->error_log) { @@ -723,9 +723,9 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ return -1; } - if (!env) + if (!env) { - /* Build the env array, only once since it won't change + /* Build the env array, only once since it won't change * for the lifetime of this parent process. */ int envc; @@ -758,7 +758,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ new_child.hproc, new_child.in)) { /* * This error is fatal, mop up the child and move on - * We toggle the child's exit event to cause this child + * We toggle the child's exit event to cause this child * to quit even as it is attempting to start. */ SetEvent(hExitEvent); @@ -771,7 +771,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ /* Important: * Give the child process a chance to run before dup'ing the sockets. - * We have already set the listening sockets noninheritable, but if + * We have already set the listening sockets noninheritable, but if * WSADuplicateSocket runs before the child process initializes * the listeners will be inherited anyway. */ @@ -779,7 +779,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ rv = WaitForMultipleObjects(2, waitlist, FALSE, INFINITE); CloseHandle(waitlist[waitlist_ready]); if (rv != WAIT_OBJECT_0) { - /* + /* * Outch... that isn't a ready signal. It's dead, Jim! */ SetEvent(hExitEvent); @@ -792,7 +792,7 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ if (send_listeners_to_child(ptemp, new_child.pid, new_child.in)) { /* * This error is fatal, mop up the child and move on - * We toggle the child's exit event to cause this child + * We toggle the child's exit event to cause this child * to quit even as it is attempting to start. */ SetEvent(hExitEvent); @@ -811,8 +811,8 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ /*********************************************************************** * master_main() - * master_main() runs in the parent process. It creates the child - * process which handles HTTP requests then waits on one of three + * master_main() runs in the parent process. It creates the child + * process which handles HTTP requests then waits on one of three * events: * * restart_event @@ -821,15 +821,15 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ * tells the old child process to exit (by setting the child_exit_event). * The restart event is set as a result of one of the following: * 1. An apache -k restart command on the command line - * 2. A command received from Windows service manager which gets + * 2. A command received from Windows service manager which gets * translated into an ap_signal_parent(SIGNAL_PARENT_RESTART) * call by code in service.c. * 3. The child process calling ap_signal_parent(SIGNAL_PARENT_RESTART) * as a result of hitting MaxRequestsPerChild. * - * shutdown_event + * shutdown_event * -------------- - * The shutdown event causes master_main to tell the child process to + * The shutdown event causes master_main to tell the child process to * exit and that the server is shutting down. The shutdown event is * set as a result of one of the following: * 1. An apache -k shutdown command on the command line @@ -839,11 +839,11 @@ static int create_process(apr_pool_t *p, HANDLE *child_proc, HANDLE *child_exit_ * * child process handle * -------------------- - * The child process handle will be signaled if the child process + * The child process handle will be signaled if the child process * exits for any reason. In a normal running server, the signaling * of this event means that the child process has exited prematurely * due to a seg fault or other irrecoverable error. For server - * robustness, master_main will restart the child process under this + * robustness, master_main will restart the child process under this * condtion. * * master_main uses the child_exit_event to signal the child process @@ -868,9 +868,9 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even event_handles[RESTART_HANDLE] = restart_event; /* Create a single child process */ - rv = create_process(pconf, &event_handles[CHILD_HANDLE], + rv = create_process(pconf, &event_handles[CHILD_HANDLE], &child_exit_event, &child_pid); - if (rv < 0) + if (rv < 0) { ap_log_error(APLOG_MARK, APLOG_CRIT, apr_get_os_error(), ap_server_conf, "master_main: create child process failed. Exiting."); @@ -906,7 +906,7 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even else if (cld == SHUTDOWN_HANDLE) { /* shutdown_event signalled */ shutdown_pending = 1; - ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, s, + ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, s, "Parent: Received shutdown signal -- Shutting down the server."); if (ResetEvent(shutdown_event) == 0) { ap_log_error(APLOG_MARK, APLOG_ERR, apr_get_os_error(), s, @@ -914,11 +914,11 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even } } else if (cld == RESTART_HANDLE) { - /* Received a restart event. Prepare the restart_event to be reused - * then signal the child process to exit. + /* Received a restart event. Prepare the restart_event to be reused + * then signal the child process to exit. */ restart_pending = 1; - ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, + ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, s, "Parent: Received restart signal -- Restarting the server."); if (ResetEvent(restart_event) == 0) { ap_log_error(APLOG_MARK, APLOG_ERR, apr_get_os_error(), s, @@ -926,10 +926,10 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even } if (SetEvent(child_exit_event) == 0) { ap_log_error(APLOG_MARK, APLOG_ERR, apr_get_os_error(), s, - "Parent: SetEvent for child process %d failed.", + "Parent: SetEvent for child process %d failed.", event_handles[CHILD_HANDLE]); } - /* Don't wait to verify that the child process really exits, + /* Don't wait to verify that the child process really exits, * just move on with the restart. */ CloseHandle(event_handles[CHILD_HANDLE]); @@ -942,17 +942,17 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even /* HUH? We did exit, didn't we? */ exitcode = APEXIT_CHILDFATAL; } - if ( exitcode == APEXIT_CHILDFATAL + if ( exitcode == APEXIT_CHILDFATAL || exitcode == APEXIT_CHILDINIT || exitcode == APEXIT_INIT) { - ap_log_error(APLOG_MARK, APLOG_CRIT, 0, ap_server_conf, + ap_log_error(APLOG_MARK, APLOG_CRIT, 0, ap_server_conf, "Parent: child process exited with status %u -- Aborting.", exitcode); shutdown_pending = 1; } else { int i; restart_pending = 1; - ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, ap_server_conf, + ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, ap_server_conf, "Parent: child process exited with status %u -- Restarting.", exitcode); for (i = 0; i < ap_threads_per_child; i++) { ap_update_child_status_from_indexes(0, i, SERVER_DEAD, NULL); @@ -966,12 +966,12 @@ static int master_main(server_rec *s, HANDLE shutdown_event, HANDLE restart_even ap_scoreboard_image->global->running_generation = ap_my_generation; } die_now: - if (shutdown_pending) + if (shutdown_pending) { int timeout = 30000; /* Timeout is milliseconds */ winnt_mpm_state = AP_MPMQ_STOPPING; - /* This shutdown is only marginally graceful. We will give the + /* This shutdown is only marginally graceful. We will give the * child a bit of time to exit gracefully. If the time expires, * the child will be wacked. */ @@ -1005,7 +1005,7 @@ die_now: return 1; /* Tell the caller we want a restart */ } -/* service_nt_main_fn needs to append the StartService() args +/* service_nt_main_fn needs to append the StartService() args * outside of our call stack and thread as the service starts... */ apr_array_header_t *mpm_new_argv; @@ -1039,7 +1039,7 @@ AP_DECLARE(apr_status_t) ap_mpm_query(int query_code, int *result) case AP_MPMQ_MIN_SPARE_DAEMONS: *result = 0; return APR_SUCCESS; - case AP_MPMQ_MIN_SPARE_THREADS: + case AP_MPMQ_MIN_SPARE_THREADS: *result = 0; return APR_SUCCESS; case AP_MPMQ_MAX_SPARE_DAEMONS: @@ -1059,7 +1059,7 @@ AP_DECLARE(apr_status_t) ap_mpm_query(int query_code, int *result) return APR_SUCCESS; } return APR_ENOTIMPL; -} +} #define SERVICE_UNSET (-1) static apr_status_t service_set = SERVICE_UNSET; @@ -1067,8 +1067,8 @@ static apr_status_t service_to_start_success; static int inst_argc; static const char * const *inst_argv; static char *service_name = NULL; - -void winnt_rewrite_args(process_rec *process) + +void winnt_rewrite_args(process_rec *process) { /* Handle the following SCM aspects in this phase: * @@ -1103,7 +1103,7 @@ void winnt_rewrite_args(process_rec *process) /* AP_PARENT_PID is only valid in the child */ pid = getenv("AP_PARENT_PID"); - if (pid) + if (pid) { /* This is the child */ my_pid = GetCurrentProcessId(); @@ -1122,19 +1122,19 @@ void winnt_rewrite_args(process_rec *process) signal_arg = "runchild"; return; } - + /* This is the parent, we have a long way to go :-) */ parent_pid = my_pid = GetCurrentProcessId(); /* This behavior is voided by setting real_exit_code to 0 */ atexit(hold_console_open_on_error); - /* Rewrite process->argv[]; + /* Rewrite process->argv[]; * * strip out -k signal into signal_arg * strip out -n servicename and set the names * add default -d serverroot from the path of this executable - * + * * The end result will look like: * * The invocation command (%0) @@ -1144,7 +1144,7 @@ void winnt_rewrite_args(process_rec *process) */ if ((rv = ap_os_proc_filepath(&binpath, process->pconf)) != APR_SUCCESS) { - ap_log_error(APLOG_MARK,APLOG_CRIT, rv, NULL, + ap_log_error(APLOG_MARK,APLOG_CRIT, rv, NULL, "Failed to get the full path of %s", process->argv[0]); exit(APEXIT_INIT); } @@ -1158,12 +1158,12 @@ void winnt_rewrite_args(process_rec *process) if (!strcasecmp(def_server_root, "bin")) *(def_server_root - 1) = '\0'; } - apr_filepath_merge(&def_server_root, NULL, binpath, + apr_filepath_merge(&def_server_root, NULL, binpath, APR_FILEPATH_TRUENAME, process->pool); /* Use process->pool so that the rewritten argv * lasts for the lifetime of the server process, - * because pconf will be destroyed after the + * because pconf will be destroyed after the * initial pre-flight of the config parser. */ mpm_new_argv = apr_array_make(process->pool, process->argc + 2, @@ -1178,7 +1178,7 @@ void winnt_rewrite_args(process_rec *process) optbuf[2] = '\0'; apr_getopt_init(&opt, process->pool, process->argc, (char**) process->argv); opt->errfn = NULL; - while ((rv = apr_getopt(opt, "wn:k:" AP_SERVER_BASEARGS, + while ((rv = apr_getopt(opt, "wn:k:" AP_SERVER_BASEARGS, optbuf + 1, &optarg)) == APR_SUCCESS) { switch (optbuf[1]) { @@ -1191,7 +1191,7 @@ void winnt_rewrite_args(process_rec *process) break; case 'n': - service_set = mpm_service_set_name(process->pool, &service_name, + service_set = mpm_service_set_name(process->pool, &service_name, optarg); break; @@ -1212,7 +1212,7 @@ void winnt_rewrite_args(process_rec *process) break; } } - + /* back up to capture the bad argument */ if (rv == APR_BADCH || rv == APR_BADARG) { opt->ind--; @@ -1233,10 +1233,10 @@ void winnt_rewrite_args(process_rec *process) running_as_service = 0; } - if (!strcasecmp(signal_arg, "runservice")) + if (!strcasecmp(signal_arg, "runservice")) { - /* Start the NT Service _NOW_ because the WinNT SCM is - * expecting us to rapidly assume control of our own + /* Start the NT Service _NOW_ because the WinNT SCM is + * expecting us to rapidly assume control of our own * process, the SCM will tell us our service name, and * may have extra StartService() command arguments to * add for us. @@ -1248,7 +1248,7 @@ void winnt_rewrite_args(process_rec *process) * (path to apache root, above /bin) for safety. */ apr_filepath_set(def_server_root, process->pool); - + /* Any other process has a console, so we don't to begin * a Win9x service until the configuration is parsed and * any command line errors are reported. @@ -1256,7 +1256,7 @@ void winnt_rewrite_args(process_rec *process) * We hold the return value so that we can die in pre_config * after logging begins, and the failure can land in the log. */ - if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) + if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) { if (!errout) { mpm_nt_eventlog_stderr_open(service_name, process->pool); @@ -1277,7 +1277,7 @@ void winnt_rewrite_args(process_rec *process) if (!strcasecmp(signal_arg, "install")) /* -k install */ { - if (service_set == APR_SUCCESS) + if (service_set == APR_SUCCESS) { ap_log_error(APLOG_MARK,APLOG_ERR, 0, NULL, "%s: Service is already installed.", service_name); @@ -1286,9 +1286,9 @@ void winnt_rewrite_args(process_rec *process) } else if (running_as_service) { - if (service_set == APR_SUCCESS) + if (service_set == APR_SUCCESS) { - /* Attempt to Uninstall, or stop, before + /* Attempt to Uninstall, or stop, before * we can read the arguments or .conf files */ if (!strcasecmp(signal_arg, "uninstall")) { @@ -1296,13 +1296,13 @@ void winnt_rewrite_args(process_rec *process) exit(rv); } - if ((!strcasecmp(signal_arg, "stop")) || + if ((!strcasecmp(signal_arg, "stop")) || (!strcasecmp(signal_arg, "shutdown"))) { mpm_signal_service(process->pool, 0); exit(0); } - rv = mpm_merge_service_args(process->pool, mpm_new_argv, + rv = mpm_merge_service_args(process->pool, mpm_new_argv, fixed_args); if (rv == APR_SUCCESS) { ap_log_error(APLOG_MARK,APLOG_INFO, 0, NULL, @@ -1322,7 +1322,7 @@ void winnt_rewrite_args(process_rec *process) exit(APEXIT_INIT); } } - if (strcasecmp(signal_arg, "install") && service_set && service_set != SERVICE_UNSET) + if (strcasecmp(signal_arg, "install") && service_set && service_set != SERVICE_UNSET) { ap_log_error(APLOG_MARK,APLOG_ERR, service_set, NULL, "No installed service named \"%s\".", service_name); @@ -1362,19 +1362,19 @@ void winnt_rewrite_args(process_rec *process) "service can be started.\n"); } - process->argc = mpm_new_argv->nelts; + process->argc = mpm_new_argv->nelts; process->argv = (const char * const *) mpm_new_argv->elts; } -static int winnt_pre_config(apr_pool_t *pconf_, apr_pool_t *plog, apr_pool_t *ptemp) +static int winnt_pre_config(apr_pool_t *pconf_, apr_pool_t *plog, apr_pool_t *ptemp) { /* Handle the following SCM aspects in this phase: * * -k runservice [WinNT errors logged from rewrite_args] */ - /* Initialize shared static objects. + /* Initialize shared static objects. * TODO: Put config related statics into an sconf structure. */ pconf = pconf_; @@ -1386,7 +1386,7 @@ static int winnt_pre_config(apr_pool_t *pconf_, apr_pool_t *plog, apr_pool_t *pt if (!strcasecmp(signal_arg, "runservice") && (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) && (service_to_start_success != APR_SUCCESS)) { - ap_log_error(APLOG_MARK,APLOG_CRIT, service_to_start_success, NULL, + ap_log_error(APLOG_MARK,APLOG_CRIT, service_to_start_success, NULL, "%s: Unable to start the service manager.", service_name); exit(APEXIT_INIT); @@ -1436,7 +1436,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt */ if (!strcasecmp(signal_arg, "install")) { - /* Service install happens in the rewrite_args hooks. If we + /* Service install happens in the rewrite_args hooks. If we * made it this far, the server configuration is clean and the * service will successfully start. */ @@ -1445,7 +1445,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt exit(0); } if (!strcasecmp(signal_arg, "config")) { - /* Service reconfiguration happens in the rewrite_args hooks. If we + /* Service reconfiguration happens in the rewrite_args hooks. If we * made it this far, the server configuration is clean and the * service will successfully start. */ @@ -1475,9 +1475,9 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt exit (rv); } - if (parent_pid == my_pid) + if (parent_pid == my_pid) { - if (restart_num++ == 1) + if (restart_num++ == 1) { /* This code should be run once in the parent and not run * across a restart @@ -1486,8 +1486,8 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt setup_signal_names(apr_psprintf(pconf,"ap%d", parent_pid)); ap_log_pid(pconf, ap_pid_fname); - - /* Create shutdown event, apPID_shutdown, where PID is the parent + + /* Create shutdown event, apPID_shutdown, where PID is the parent * Apache process ID. Shutdown is signaled by 'apache -k shutdown'. */ shutdown_event = CreateEvent(sa, FALSE, FALSE, signal_shutdown_name); @@ -1498,7 +1498,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt return HTTP_INTERNAL_SERVER_ERROR; } - /* Create restart event, apPID_restart, where PID is the parent + /* Create restart event, apPID_restart, where PID is the parent * Apache process ID. Restart is signaled by 'apache -k restart'. */ restart_event = CreateEvent(sa, FALSE, FALSE, signal_restart_name); @@ -1511,14 +1511,14 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt } CleanNullACL((void *)sa); - /* Now that we are flying at 15000 feet... + /* Now that we are flying at 15000 feet... * wipe out the Win95 service console, * signal the SCM the WinNT service started, or * if not a service, setup console handlers instead. */ if (!strcasecmp(signal_arg, "runservice")) { - if (osver.dwPlatformId != VER_PLATFORM_WIN32_NT) + if (osver.dwPlatformId != VER_PLATFORM_WIN32_NT) { rv = mpm_service_to_start(&service_name, s->process->pool); @@ -1536,7 +1536,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt } /* Create the start mutex, as an unnamed object for security. - * Ths start mutex is used during a restart to prevent more than + * Ths start mutex is used during a restart to prevent more than * one child process from entering the accept loop at once. */ rv = apr_proc_mutex_create(&start_mutex, NULL, @@ -1547,7 +1547,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt "%s: Unable to create the start_mutex.", service_name); return HTTP_INTERNAL_SERVER_ERROR; - } + } } } else /* parent_pid != my_pid */ @@ -1562,7 +1562,7 @@ static int winnt_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pt */ static int winnt_open_logs(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { - /* Initialize shared static objects. + /* Initialize shared static objects. */ ap_server_conf = s; @@ -1572,16 +1572,16 @@ static int winnt_open_logs(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, s /* We cannot initialize our listeners if we are restarting * (the parent process already has glomed on to them) - * nor should we do so for service reconfiguration + * nor should we do so for service reconfiguration * (since the service may already be running.) */ - if (!strcasecmp(signal_arg, "restart") + if (!strcasecmp(signal_arg, "restart") || !strcasecmp(signal_arg, "config")) { return OK; } if (ap_setup_listeners(s) < 1) { - ap_log_error(APLOG_MARK, APLOG_ALERT|APLOG_STARTUP, 0, + ap_log_error(APLOG_MARK, APLOG_ALERT|APLOG_STARTUP, 0, NULL, "no listening sockets available, shutting down"); return DONE; } @@ -1598,7 +1598,7 @@ static void winnt_child_init(apr_pool_t *pchild, struct server_rec *s) /* This is a child process, not in single process mode */ if (!one_process) { /* Set up events and the scoreboard */ - get_handles_from_parent(s, &exit_event, &start_mutex, + get_handles_from_parent(s, &exit_event, &start_mutex, &ap_scoreboard_shm); /* Set up the listeners */ @@ -1608,7 +1608,7 @@ static void winnt_child_init(apr_pool_t *pchild, struct server_rec *s) } else { /* Single process mode - this lock doesn't even need to exist */ - rv = apr_proc_mutex_create(&start_mutex, signal_name_prefix, + rv = apr_proc_mutex_create(&start_mutex, signal_name_prefix, APR_LOCK_DEFAULT, s->process->pool); if (rv != APR_SUCCESS) { ap_log_error(APLOG_MARK,APLOG_ERR, rv, ap_server_conf, @@ -1616,7 +1616,7 @@ static void winnt_child_init(apr_pool_t *pchild, struct server_rec *s) service_name, my_pid); exit(APEXIT_CHILDINIT); } - + /* Borrow the shutdown_even as our _child_ loop exit event */ exit_event = shutdown_event; } @@ -1637,10 +1637,10 @@ AP_DECLARE(int) ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s ) "during restart"); changed_limit_at_restart = 0; } - - /* ### If non-graceful restarts are ever introduced - we need to rerun - * the pre_mpm hook on subsequent non-graceful restarts. But Win32 - * has only graceful style restarts - and we need this hook to act + + /* ### If non-graceful restarts are ever introduced - we need to rerun + * the pre_mpm hook on subsequent non-graceful restarts. But Win32 + * has only graceful style restarts - and we need this hook to act * the same on Win32 as on Unix. */ if (!restart && ((parent_pid == my_pid) || one_process)) { @@ -1649,10 +1649,10 @@ AP_DECLARE(int) ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s ) return 1; } } - - if ((parent_pid != my_pid) || one_process) + + if ((parent_pid != my_pid) || one_process) { - /* The child process or in one_process (debug) mode + /* The child process or in one_process (debug) mode */ ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, ap_server_conf, "Child %d: Child process is running", my_pid); @@ -1660,10 +1660,10 @@ AP_DECLARE(int) ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s ) child_main(pconf); ap_log_error(APLOG_MARK, APLOG_NOTICE, APR_SUCCESS, ap_server_conf, - "Child %d: Child process is exiting", my_pid); + "Child %d: Child process is exiting", my_pid); return 1; } - else + else { /* A real-honest to goodness parent */ ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, ap_server_conf, @@ -1674,7 +1674,7 @@ AP_DECLARE(int) ap_mpm_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s ) restart = master_main(ap_server_conf, shutdown_event, restart_event); - if (!restart) + if (!restart) { /* Shutting down. Clean up... */ const char *pidfile = ap_server_root_relative (pconf, ap_pid_fname); |