/* child_main() should never need to modify is_graceful!?! */
extern int volatile is_graceful;
-
/* Queue for managing the passing of COMP_CONTEXTs between
* the accept and worker threads.
*/
if (!listener_started && threads_created) {
create_listener_thread();
listener_started = 1;
+ winnt_mpm_state = AP_MPMQ_RUNNING;
}
if (threads_created == ap_threads_per_child) {
break;
*/
shutdown:
+
+ winnt_mpm_state = AP_MPMQ_STOPPING;
/* Setting is_graceful will cause threads handling keep-alive connections
* to close the connection after handling the current request.
*/
static int thread_limit = DEFAULT_THREAD_LIMIT;
static int first_thread_limit = 0;
static int changed_limit_at_restart;
+int winnt_mpm_state = AP_MPMQ_STARTING;
/* ap_my_generation are used by the scoreboard code */
ap_generation_t volatile ap_my_generation=0;
switch(type) {
case SIGNAL_PARENT_SHUTDOWN:
{
+ winnt_mpm_state = AP_MPMQ_STOPPING;
SetEvent(shutdown_event);
break;
}
case SIGNAL_PARENT_RESTART:
case SIGNAL_PARENT_RESTART_GRACEFUL:
{
+ winnt_mpm_state = AP_MPMQ_STOPPING;
is_graceful = 1;
SetEvent(restart_event);
break;
switch(type) {
case SIGNAL_PARENT_SHUTDOWN:
{
+ winnt_mpm_state = AP_MPMQ_STOPPING;
signal_name = signal_shutdown_name;
break;
}
case SIGNAL_PARENT_RESTART:
case SIGNAL_PARENT_RESTART_GRACEFUL:
{
+ winnt_mpm_state = AP_MPMQ_STOPPING;
signal_name = signal_restart_name;
is_graceful = 1;
break;
case AP_MPMQ_MAX_DAEMONS:
*result = 0;
return APR_SUCCESS;
+ case AP_MPMQ_MPM_STATE:
+ *result = winnt_mpm_state;
+ return APR_SUCCESS;
}
return APR_ENOTIMPL;
}