From e06307b655440f69a7b0fb6a00d582a1ec97ee89 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 31 Oct 2016 16:35:14 +0100 Subject: [PATCH] iptv: change a bit logic to handle connection/rate limiting --- src/input/mpegts/iptv/iptv.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) 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; } -- 2.47.3