summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorStefan Fritsch <sf@apache.org>2012-02-27 23:04:54 +0100
committerStefan Fritsch <sf@apache.org>2012-02-27 23:04:54 +0100
commit7a8f5c88aa53cc329f8e031bba6f53f01009b7d6 (patch)
tree5953c15c30c83c9600fbb5ea0225ab11f6d5d056 /include
parentPrevent listener thread from ever updating a worker's scoreboard slot (diff)
downloadapache2-7a8f5c88aa53cc329f8e031bba6f53f01009b7d6.tar.xz
apache2-7a8f5c88aa53cc329f8e031bba6f53f01009b7d6.zip
Take care not to call ap_start_lingering_close from the listener thread,
because it may block when flushing data to the client. From the listener thread, do a lingering close without flushing. This is OK because we only do this if there has been an error during write completion or if our send buffers are empty because we are in keep-alive. PR: 52229 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1294356 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include')
-rw-r--r--include/httpd.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/httpd.h b/include/httpd.h
index 82a3fff7ff..4ec83a2051 100644
--- a/include/httpd.h
+++ b/include/httpd.h
@@ -1147,6 +1147,8 @@ struct conn_rec {
/**
* Enumeration of connection states
+ * The two states CONN_STATE_LINGER_NORMAL and CONN_STATE_LINGER_SHORT may
+ * only be set by the MPM. Use CONN_STATE_LINGER outside of the MPM.
*/
typedef enum {
CONN_STATE_CHECK_REQUEST_LINE_READABLE,
@@ -1154,9 +1156,9 @@ typedef enum {
CONN_STATE_HANDLER,
CONN_STATE_WRITE_COMPLETION,
CONN_STATE_SUSPENDED,
- CONN_STATE_LINGER,
- CONN_STATE_LINGER_NORMAL,
- CONN_STATE_LINGER_SHORT
+ CONN_STATE_LINGER, /* connection may be closed with lingering */
+ CONN_STATE_LINGER_NORMAL, /* MPM has started lingering close with normal timeout */
+ CONN_STATE_LINGER_SHORT /* MPM has started lingering close with short timeout */
} conn_state_e;
/**