]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r594839 from trunk:
authorJim Jagielski <jim@apache.org>
Tue, 20 Nov 2007 14:04:47 +0000 (14:04 +0000)
committerJim Jagielski <jim@apache.org>
Tue, 20 Nov 2007 14:04:47 +0000 (14:04 +0000)
core: Avoid some unexpected connection closes by telling the client
that the connection is not persistent if the MPM process handling
the request is already exiting when the response header is built.

Submitted by: trawick
Reviewed by: jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@596677 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
modules/http/http_protocol.c

diff --git a/CHANGES b/CHANGES
index e326de046ca2764c26f2679f64b595c3e6facae1..f288923fed0c7d704739aacc06c79484b8f64d66 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,11 @@
                                                         -*- coding: utf-8 -*-
 Changes with Apache 2.2.7
 
+  *) core: Avoid some unexpected connection closes by telling the client
+     that the connection is not persistent if the MPM process handling
+     the request is already exiting when the response header is built.
+     [Jeff Trawick]
+
   *) mod_autoindex: Generate valid XHTML output by adding the xhtml
      namespace. PR 43649 [Jose Kahan <jose w3.org>]
 
diff --git a/STATUS b/STATUS
index 903b2c1330fc7b720c1c87ba5a8f9b5977c2d91a..3211663902cdbc07657df6a0890695970a2d3783 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -109,13 +109,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
      niq says: done
      jim: +1
 
-   * core: Avoid some unexpected connection closes by telling the client
-     that the connection is not persistent if the MPM process handling
-     the request is already exiting when the response header is built.
-     trunk: http://svn.apache.org/viewvc?view=rev&revision=594839
-     2.2.x: trunk patch applies
-     +1: trawick, rpluem, jim
-
    * mod_charset_lite cleanups to remove long-abandoned logic and fix
      some minor style problems
      trunk:
index d8886af19bb5af2d160df4937a36f21ba5d564eb..3d123c9e733cd5dee1ed1d7a9b6b396af591d121 100644 (file)
@@ -48,6 +48,7 @@
 #include "util_charset.h"
 #include "util_ebcdic.h"
 #include "util_time.h"
+#include "ap_mpm.h"
 
 #include "mod_core.h"
 
@@ -187,6 +188,7 @@ AP_DECLARE(int) ap_set_keepalive(request_rec *r)
      *       or they're a buggy twit coming through a HTTP/1.1 proxy
      *   and    the client is requesting an HTTP/1.0-style keep-alive
      *       or the client claims to be HTTP/1.1 compliant (perhaps a proxy);
+     *   and this MPM process is not already exiting
      *   THEN we can be persistent, which requires more headers be output.
      *
      * Note that the condition evaluation order is extremely important.
@@ -212,7 +214,8 @@ AP_DECLARE(int) ap_set_keepalive(request_rec *r)
         && (!apr_table_get(r->subprocess_env, "nokeepalive")
             || apr_table_get(r->headers_in, "Via"))
         && ((ka_sent = ap_find_token(r->pool, conn, "keep-alive"))
-            || (r->proto_num >= HTTP_VERSION(1,1)))) {
+            || (r->proto_num >= HTTP_VERSION(1,1)))
+        && !ap_graceful_stop_signalled()) {
         int left = r->server->keep_alive_max - r->connection->keepalives;
 
         r->connection->keepalive = AP_CONN_KEEPALIVE;