You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by je...@apache.org on 2005/12/07 01:19:00 UTC

svn commit: r354628 - in /httpd/httpd/trunk: CHANGES modules/proxy/mod_proxy_http.c

Author: jerenkrantz
Date: Tue Dec  6 16:18:58 2005
New Revision: 354628

URL: http://svn.apache.org/viewcvs?rev=354628&view=rev
Log:
If we get an error reading the upstream response, we should bail.

Reported by: Brian Akins

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/proxy/mod_proxy_http.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/CHANGES?rev=354628&r1=354627&r2=354628&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Tue Dec  6 16:18:58 2005
@@ -2,6 +2,9 @@
 Changes with Apache 2.3.0
   [Remove entries to the current 2.0 and 2.2 section below, when backported]
 
+  *) mod_proxy: If we get an error reading the upstream response,
+     close the connection.  [Brian Akins, Justin Erenkrantz]
+
   *) mod_ssl: Fix a possible crash during access control checks if a
      non-SSL request is processed for an SSL vhost (such as the
      "HTTP request received on SSL port" error message when an 400 

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?rev=354628&r1=354627&r2=354628&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Tue Dec  6 16:18:58 2005
@@ -1482,6 +1482,7 @@
                     else if (rv != APR_SUCCESS) {
                         ap_log_cerror(APLOG_MARK, APLOG_ERR, rv, c,
                                       "proxy: error reading response");
+                        c->aborted = 1;
                         break;
                     }
                     /* next time try a non-blocking read */
@@ -1546,6 +1547,11 @@
             apr_brigade_cleanup(bb);
         }
     } while (interim_response);
+
+    /* If we our connection with the client is to be aborted, return DONE. */
+    if (c->aborted) {
+        return DONE;
+    }
 
     if (conf->error_override) {
         /* the code above this checks for 'OK' which is what the hook expects */