]> granicus.if.org Git - apache/commitdiff
Every 32 ranges, pass the prepared ranges down the filter chain.
authorStefan Fritsch <sf@apache.org>
Sun, 28 Aug 2011 19:45:21 +0000 (19:45 +0000)
committerStefan Fritsch <sf@apache.org>
Sun, 28 Aug 2011 19:45:21 +0000 (19:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1162579 13f79535-47bb-0310-9956-ffa450edef68

modules/http/byterange_filter.c

index a1a5b9408ca4a26c04a4a91ef14cf8fabe6292cd..c49e35c07f9bdc7fa3b1d938b70380d4a548f707 100644 (file)
@@ -378,6 +378,12 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_byterange_filter(ap_filter_t *f,
         }
 
         APR_BRIGADE_CONCAT(bsend, tmpbb);
+        if (i && i % 32 == 0) {
+            /* Every now and then, pass what we have down the filter chain */
+            if ((rv = ap_pass_brigade(f->next, bsend)) != APR_SUCCESS)
+                return rv;
+            apr_brigade_cleanup(bsend);
+        }
     }
 
     if (found == 0) {