]> granicus.if.org Git - apache/commitdiff
Make %k work as it should. No regression noted in perl
authorJim Jagielski <jim@apache.org>
Mon, 24 Nov 2008 18:33:09 +0000 (18:33 +0000)
committerJim Jagielski <jim@apache.org>
Mon, 24 Nov 2008 18:33:09 +0000 (18:33 +0000)
test framework.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@720250 13f79535-47bb-0310-9956-ffa450edef68

modules/http/http_protocol.c
modules/loggers/mod_log_config.c

index 1caaaa91b2432a453d2b2d2b0d17579df8a16a4e..a0207b0f5a304b82c2d0006a3d55cd48892c0ff1 100644 (file)
@@ -176,6 +176,7 @@ static int is_mpm_running(void)
 AP_DECLARE(int) ap_set_keepalive(request_rec *r)
 {
     int ka_sent = 0;
+    int left = r->server->keep_alive_max - r->connection->keepalives;
     int wimpy = ap_find_token(r->pool,
                               apr_table_get(r->headers_out, "Connection"),
                               "close");
@@ -221,7 +222,7 @@ AP_DECLARE(int) ap_set_keepalive(request_rec *r)
         && r->server->keep_alive
         && (r->server->keep_alive_timeout > 0)
         && ((r->server->keep_alive_max == 0)
-            || (r->server->keep_alive_max > r->connection->keepalives))
+            || (left > 0))
         && !ap_status_drops_connection(r->status)
         && !wimpy
         && !ap_find_token(r->pool, conn, "close")
@@ -230,7 +231,6 @@ AP_DECLARE(int) ap_set_keepalive(request_rec *r)
         && ((ka_sent = ap_find_token(r->pool, conn, "keep-alive"))
             || (r->proto_num >= HTTP_VERSION(1,1)))
         && is_mpm_running()) {
-        int left = r->server->keep_alive_max - r->connection->keepalives;
 
         r->connection->keepalive = AP_CONN_KEEPALIVE;
         r->connection->keepalives++;
@@ -266,6 +266,16 @@ AP_DECLARE(int) ap_set_keepalive(request_rec *r)
         apr_table_mergen(r->headers_out, "Connection", "close");
     }
 
+    /*
+     * If we had previously been a keepalive connection and this
+     * is the last one, then bump up the number of keepalives
+     * we've had
+     */
+    if ((r->connection->keepalive != AP_CONN_CLOSE)
+        && r->server->keep_alive_max
+        && !left) {
+        r->connection->keepalives++;
+    }
     r->connection->keepalive = AP_CONN_CLOSE;
 
     return 0;
index c54859e53ee51d65c418c854b775d6b2a7cf8290..8a2d4b29bf57fa9ecd1a7059518f4237d06f9f84 100644 (file)
@@ -697,7 +697,8 @@ static const char *log_connection_status(request_rec *r, char *a)
 
 static const char *log_requests_on_connection(request_rec *r, char *a)
 {
-    return apr_itoa(r->pool, r->connection->keepalives);
+    int num = r->connection->keepalives ? r->connection->keepalives - 1 : 0;
+    return apr_itoa(r->pool, num);
 }
 
 /*****************************************************************