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]
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