You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2016/12/15 23:17:26 UTC
svn commit: r1774538 - /httpd/httpd/trunk/server/mpm/event/event.c
Author: ylavic
Date: Thu Dec 15 23:17:26 2016
New Revision: 1774538
URL: http://svn.apache.org/viewvc?rev=1774538&view=rev
Log:
event: follow up to r1762718.
On graceful shutdown/restart, kill kept-alive connections before poll()ing
again, avoiding to wait for their "normal" timers (before being woken up)
when they remain the last handled connections.
Modified:
httpd/httpd/trunk/server/mpm/event/event.c
Modified: httpd/httpd/trunk/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1774538&r1=1774537&r2=1774538&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Thu Dec 15 23:17:26 2016
@@ -1967,12 +1967,16 @@ static void * APR_THREAD_FUNC listener_t
rc = apr_pollset_poll(event_pollset, timeout_interval, &num, &out_pfd);
if (rc != APR_SUCCESS) {
if (APR_STATUS_IS_EINTR(rc)) {
- /* Woken up, either update timeouts or shutdown,
- * both logics are above.
+ /* Woken up, if we are exiting we must fall through to kill
+ * kept-alive connections, otherwise we only need to update
+ * timeouts (logic is above, so restart the loop).
*/
- continue;
+ if (!listener_may_exit) {
+ continue;
+ }
+ timeout_time = 0;
}
- if (!APR_STATUS_IS_TIMEUP(rc)) {
+ else if (!APR_STATUS_IS_TIMEUP(rc)) {
ap_log_error(APLOG_MARK, APLOG_CRIT, rc, ap_server_conf,
APLOGNO(03267)
"apr_pollset_poll failed. Attempting to "