]> granicus.if.org Git - apache/commitdiff
core: avoid double loop in ap_filter_output_pending().
authorYann Ylavic <ylavic@apache.org>
Wed, 18 Jul 2018 22:40:32 +0000 (22:40 +0000)
committerYann Ylavic <ylavic@apache.org>
Wed, 18 Jul 2018 22:40:32 +0000 (22:40 +0000)
Since ap_filter_output_pending() is looping on the relevant filters already,
we don't need to use ap_filter_should_yield() to check upstream filters.

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

server/util_filter.c

index 22af83d8bc04a494b1643db006da355bf8d131ae..5d35c96b10133983bdada948a6b39849d4926aae 100644 (file)
@@ -1004,7 +1004,6 @@ AP_DECLARE(int) ap_filter_should_yield(ap_filter_t *f)
 
 AP_DECLARE_NONSTD(int) ap_filter_output_pending(conn_rec *c)
 {
-    int data_in_output_filters = DECLINED;
     apr_bucket_brigade *bb;
     ap_filter_t *f;
 
@@ -1035,13 +1034,13 @@ AP_DECLARE_NONSTD(int) ap_filter_output_pending(conn_rec *c)
                 return rv;
             }
 
-            if (ap_filter_should_yield(f)) {
-                data_in_output_filters = OK;
+            if (f->bb && !APR_BRIGADE_EMPTY(f->bb)) {
+                return OK;
             }
         }
     }
 
-    return data_in_output_filters;
+    return DECLINED;
 }
 
 AP_DECLARE_NONSTD(int) ap_filter_input_pending(conn_rec *c)