]> granicus.if.org Git - apache/commitdiff
reverting r1807238 bc not addressing the issue https://github.com/icing/mod_h2/issues/120
authorStefan Eissing <icing@apache.org>
Fri, 29 Sep 2017 12:29:23 +0000 (12:29 +0000)
committerStefan Eissing <icing@apache.org>
Fri, 29 Sep 2017 12:29:23 +0000 (12:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1810088 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/http2/h2_mplx.c

diff --git a/CHANGES b/CHANGES
index 249acf98e1d4cf13357b8b1438eac3acca9d73d3..50523b789863aba48e64366bba78a6742aa14b6a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -66,9 +66,6 @@ Changes with Apache 2.5.0
        to facilitate upgrades.
     [Stefan Eissing]
 
-  *) mod_http2: DoS flow control protection is less agressive as long as active tasks stay
-     below worker capacity. Intended to fix problems with media streaming. [Stefan Eissing]
-     
   *) mod_md: v0.9.0:
      Certificate provisioning from Let's Encrypt (and other ACME CAs) for mod_ssl virtual hosts.
      [Stefan Eissing]
index 7da8fb65de5d25777e2e6689e88084c001b370f8..a04962ec9e013ab9e192df8b970d317b7cb18ce7 100644 (file)
@@ -957,29 +957,19 @@ static h2_stream *get_timed_out_busy_stream(h2_mplx *m)
 static apr_status_t unschedule_slow_tasks(h2_mplx *m) 
 {
     h2_stream *stream;
-    int n, amax;
+    int n;
     
     /* Try to get rid of streams that occupy workers. Look for safe requests
      * that are repeatable. If none found, fail the connection.
-     *
-     * see: https://github.com/icing/mod_h2/issues/120
-     * Enforcing m->limit_active (which can go as low as 2) was too 
-     * aggressive for media streaming. Players needed to re-open streams/connections
-     * continously as they were reading large files very slowly.
      */
-    amax = m->max_active/2;
-    if (m->limit_active > amax) {
-        amax = m->limit_active; 
-    }
-    n = (m->tasks_active - amax - (int)h2_ihash_count(m->sredo));
-    
+    n = (m->tasks_active - m->limit_active - (int)h2_ihash_count(m->sredo));
     while (n > 0 && (stream = get_latest_repeatable_unsubmitted_stream(m))) {
         h2_task_rst(stream->task, H2_ERR_CANCEL);
         h2_ihash_add(m->sredo, stream);
         --n;
     }
     
-    if ((m->tasks_active - h2_ihash_count(m->sredo)) > amax) {
+    if ((m->tasks_active - h2_ihash_count(m->sredo)) > m->limit_active) {
         h2_stream *stream = get_timed_out_busy_stream(m);
         if (stream) {
             /* Too many busy workers, unable to cancel enough streams