2.4.x patch: trunk works:
+1 covener, ylavic, jim
- * event: avoid dereferencing a recently apr_pool_clear()'ed
- event_conn_state_t *cs when ptrans is being recycled at EOR.
- trunk patch: http://svn.apache.org/r1638879
- http://svn.apache.org/r1640031
- 2.4.x patch: trunk works
- +1 covener, ylavic, jim
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
TO_QUEUE_REMOVE(*q, cs);
apr_thread_mutex_unlock(timeout_mutex);
apr_socket_close(cs->pfd.desc.s);
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
return 0;
}
static int start_lingering_close_blocking(event_conn_state_t *cs)
{
if (ap_start_lingering_close(cs->c)) {
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
return 0;
}
if (c->aborted
|| apr_socket_shutdown(csd, APR_SHUTDOWN_WRITE) != APR_SUCCESS) {
apr_socket_close(csd);
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
return 0;
}
ap_log_error(APLOG_MARK, APLOG_ERR, rv, ap_server_conf, APLOGNO(00468) "error closing socket");
AP_DEBUG_ASSERT(0);
}
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
return 0;
}
c = ap_run_create_connection(p, ap_server_conf, sock,
conn_id, sbh, cs->bucket_alloc);
if (!c) {
- apr_bucket_alloc_destroy(cs->bucket_alloc);
- apr_pool_clear(p);
ap_push_pool(worker_queue_info, p);
return;
}
apr_socket_close(cs->pfd.desc.s);
ap_log_error(APLOG_MARK, APLOG_CRIT, rc,
ap_server_conf, APLOGNO(00471) "push2worker: ap_queue_push failed");
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
}
apr_thread_mutex_unlock(timeout_mutex);
TO_QUEUE_ELEM_INIT(cs);
- apr_pool_clear(cs->p);
ap_push_pool(worker_queue_info, cs->p);
}
ap_log_error(APLOG_MARK, APLOG_CRIT, rc,
ap_server_conf,
"ap_queue_push failed");
- apr_pool_clear(ptrans);
ap_push_pool(worker_queue_info, ptrans);
}
else {
}
}
else {
- apr_pool_clear(ptrans);
ap_push_pool(worker_queue_info, ptrans);
}
}