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 2015/10/12 13:57:42 UTC

svn commit: r1708095 - /httpd/httpd/trunk/server/request.c

Author: ylavic
Date: Mon Oct 12 11:57:42 2015
New Revision: 1708095

URL: http://svn.apache.org/viewvc?rev=1708095&view=rev
Log:
core: follow up to r1708084.
We don't want to process the subrequest either in ap_sub_req_method_uri()
if the quick-handler returned an error (or any final status).

Modified:
    httpd/httpd/trunk/server/request.c

Modified: httpd/httpd/trunk/server/request.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/request.c?rev=1708095&r1=1708094&r2=1708095&view=diff
==============================================================================
--- httpd/httpd/trunk/server/request.c (original)
+++ httpd/httpd/trunk/server/request.c Mon Oct 12 11:57:42 2015
@@ -2228,8 +2228,7 @@ AP_DECLARE(request_rec *) ap_sub_req_met
                                                 ap_filter_t *next_filter)
 {
     request_rec *rnew;
-    /* Initialise res, to avoid a gcc warning */
-    int res = HTTP_INTERNAL_SERVER_ERROR;
+    int res = DECLINED;
     char *udir;
 
     rnew = make_sub_request(r, next_filter);
@@ -2246,6 +2245,9 @@ AP_DECLARE(request_rec *) ap_sub_req_met
         udir = ap_escape_uri(rnew->pool, udir);    /* re-escape it */
         ap_parse_uri(rnew, ap_make_full_path(rnew->pool, udir, new_uri));
     }
+    if (ap_is_HTTP_ERROR(rnew->status)) {
+        return rnew;
+    }
 
     /* We cannot return NULL without violating the API. So just turn this
      * subrequest into a 500 to indicate the failure. */
@@ -2267,11 +2269,11 @@ AP_DECLARE(request_rec *) ap_sub_req_met
     if (next_filter) {
         res = ap_run_quick_handler(rnew, 1);
     }
-
-    if (next_filter == NULL || res != OK) {
-        if ((res = ap_process_request_internal(rnew))) {
-            rnew->status = res;
-        }
+    if (res == DECLINED) {
+        res = ap_process_request_internal(rnew);
+    }
+    if (res) {
+        rnew->status = res;
     }
 
     return rnew;