You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2020/07/23 14:03:24 UTC

svn commit: r1880204 - /httpd/httpd/trunk/modules/proxy/mod_proxy_http.c

Author: ylavic
Date: Thu Jul 23 14:03:24 2020
New Revision: 1880204

URL: http://svn.apache.org/viewvc?rev=1880204&view=rev
Log:
mod_proxy_http: follow up to r1879419.

Better ap_proxy_tunnel_run() error handling.

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

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?rev=1880204&r1=1880203&r2=1880204&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Thu Jul 23 14:03:24 2020
@@ -349,7 +349,7 @@ static void proxy_http_async_cb(void *ba
                                               proxy_http_async_cancel_cb, 
                                               req, req->idle_timeout);
     }
-    else if (status != OK) {
+    else if (ap_is_HTTP_ERROR(status)) {
         proxy_http_async_cancel_cb(req);
     }
     else {
@@ -1757,6 +1757,7 @@ int ap_proxy_http_process_response(proxy
                 return HTTP_INTERNAL_SERVER_ERROR;
             }
 
+            r->status = HTTP_SWITCHING_PROTOCOLS;
             req->proto = upgrade;
 
             if (req->can_go_async) {
@@ -1770,11 +1771,9 @@ int ap_proxy_http_process_response(proxy
             /* Let proxy tunnel forward everything within this thread */
             req->tunnel->timeout = req->idle_timeout;
             status = ap_proxy_tunnel_run(req->tunnel);
-            if (!ap_is_HTTP_ERROR(status)) {
-                /* Update r->status for custom log */
-                status = HTTP_SWITCHING_PROTOCOLS;
+            if (ap_is_HTTP_ERROR(status)) {
+                r->status = status;
             }
-            r->status = status;
 
             /* We are done with both connections */
             r->connection->keepalive = AP_CONN_CLOSE;