From: Jaroslav Kysela Date: Mon, 31 Oct 2016 15:35:14 +0000 (+0100) Subject: iptv: change a bit logic to handle connection/rate limiting X-Git-Tag: v4.2.1~243 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e06307b655440f69a7b0fb6a00d582a1ec97ee89;p=thirdparty%2Ftvheadend.git iptv: change a bit logic to handle connection/rate limiting --- diff --git a/src/input/mpegts/iptv/iptv.c b/src/input/mpegts/iptv/iptv.c index ff361882c..e932c2b05 100644 --- a/src/input/mpegts/iptv/iptv.c +++ b/src/input/mpegts/iptv/iptv.c @@ -161,7 +161,7 @@ iptv_input_is_free ( mpegts_input_t *mi, mpegts_mux_t *mm, LIST_FOREACH(mmi, &mi->mi_mux_active, mmi_active_link) if (mmi->mmi_mux->mm_network == (mpegts_network_t *)in) { w = mpegts_mux_instance_weight(mmi); - if (w < rw) { + if (w < rw && (!active || mmi->mmi_mux != mm)) { rmmi = mmi; rw = w; } @@ -172,19 +172,18 @@ iptv_input_is_free ( mpegts_input_t *mi, mpegts_mux_t *mm, if (lweight) *lweight = rw == INT_MAX ? 0 : rw; + if (!rmmi) + return NULL; + /* Limit reached */ - if (in->in_max_streams && h >= in->in_max_streams) { - if (active) { - if (l == 0) - return rmmi; - } else { + if (in->in_max_streams && h >= in->in_max_streams) + if (rmmi->mmi_mux != mm) return rmmi; - } - } /* Bandwidth reached */ - if (in->in_bw_limited && l == 0) - return rmmi; + if (in->in_bw_limited) + if (rmmi->mmi_mux != mm) + return rmmi; return NULL; }