From 709cfd2248a0262534384c1d642f7ff68f74579b Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Fri, 29 Sep 2017 12:29:23 +0000 Subject: [PATCH] reverting r1807238 bc not addressing the issue https://github.com/icing/mod_h2/issues/120 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1810088 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 --- modules/http2/h2_mplx.c | 16 +++------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index 249acf98e1..50523b7898 100644 --- 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] diff --git a/modules/http2/h2_mplx.c b/modules/http2/h2_mplx.c index 7da8fb65de..a04962ec9e 100644 --- a/modules/http2/h2_mplx.c +++ b/modules/http2/h2_mplx.c @@ -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 -- 2.40.0