- pod cleanup - fix for potential parent segfault (Jeff Trawick) --- httpd-2.0.48/server/mpm/worker/pod.c.worker +++ httpd-2.0.48/server/mpm/worker/pod.c @@ -105,31 +105,13 @@ return AP_NORESTART; } -AP_DECLARE(apr_status_t) ap_mpm_pod_close(ap_pod_t *pod) -{ - apr_status_t rv; - - rv = apr_file_close(pod->pod_out); - if (rv != APR_SUCCESS) { - return rv; - } - - rv = apr_file_close(pod->pod_in); - if (rv != APR_SUCCESS) { - return rv; - } - return rv; -} - static apr_status_t pod_signal_internal(ap_pod_t *pod, int graceful) { apr_status_t rv; char char_of_death = graceful ? GRACEFUL_CHAR : RESTART_CHAR; apr_size_t one = 1; - do { - rv = apr_file_write(pod->pod_out, &char_of_death, &one); - } while (APR_STATUS_IS_EINTR(rv)); + rv = apr_file_write(pod->pod_out, &char_of_death, &one); if (rv != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_WARNING, rv, ap_server_conf, "write pipe_of_death"); --- httpd-2.0.48/server/mpm/worker/worker.c.worker +++ httpd-2.0.48/server/mpm/worker/worker.c @@ -1483,6 +1483,7 @@ } } if (any_dead_threads && totally_free_length < idle_spawn_rate + && free_length < MAX_SPAWN_RATE && (!ps->pid /* no process in the slot */ || ps->quiescing)) { /* or at least one is going away */ if (all_dead_threads) {