]> granicus.if.org Git - apache/commitdiff
* Notice a timeout as an error message. This might be valuable for detecting
authorRuediger Pluem <rpluem@apache.org>
Fri, 29 Sep 2006 13:39:53 +0000 (13:39 +0000)
committerRuediger Pluem <rpluem@apache.org>
Fri, 29 Sep 2006 13:39:53 +0000 (13:39 +0000)
  clients with broken network connections or possible DoS attacks.

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

modules/http/http_request.c

index b8bc300d082154c627e7efe0d67f2e80a780646f..545d8b4d43188bb6656283d7a3b06d2c7176f712 100644 (file)
@@ -276,6 +276,7 @@ void ap_process_request(request_rec *r)
     apr_bucket_brigade *bb;
     apr_bucket *b;
     conn_rec *c = r->connection;
+    apr_status_t rv;
 
     ap_process_async_request(r);
 
@@ -283,7 +284,20 @@ void ap_process_request(request_rec *r)
         bb = apr_brigade_create(c->pool, c->bucket_alloc);
         b = apr_bucket_flush_create(c->bucket_alloc);
         APR_BRIGADE_INSERT_HEAD(bb, b);
-        ap_pass_brigade(c->output_filters, bb);
+        rv = ap_pass_brigade(c->output_filters, bb);
+        if (rv == APR_TIMEUP) {
+            /*
+             * Notice a timeout as an error message. This might be
+             * valuable for detecting clients with broken network
+             * connections or possible DoS attacks.
+             *
+             * It is still save to use r / r->pool here as the eor bucket
+             * could not have been destroyed in the event of a timeout.
+             */
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r,
+                          "Timeout while writing data for URI %s to the"
+                          " client", r->unparsed_uri);
+        }
     }
     if (ap_extended_status) {
         ap_time_process_request(c->sbh, STOP_PREQUEST);