From: Jaroslav Kysela Date: Fri, 8 Aug 2014 16:55:23 +0000 (+0200) Subject: cwc: Fix the emm tables shutdown sequence X-Git-Tag: v4.1~1604 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c1166d75c852fc8eb6feb2d4950ba1c8a6aa4104;p=thirdparty%2Ftvheadend.git cwc: Fix the emm tables shutdown sequence --- diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 356a7d693..636fe9e29 100755 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -2146,11 +2146,11 @@ cwc_caid_update(mpegts_mux_t *mux, uint16_t caid, uint16_t pid, int valid) mux, caid, caid, pid, pid, valid); pthread_mutex_lock(&cwc_mutex); TAILQ_FOREACH(cwc, &cwcs, cwc_link) { - if (cwc->cwc_running) { + if (valid < 0 || cwc->cwc_running) { LIST_FOREACH(pcard, &cwc->cwc_cards, cs_card) { - if (pcard->cwc_caid == caid) { + if (valid < 0 || pcard->cwc_caid == caid) { if (pcard->cwc_mux && pcard->cwc_mux != mux) continue; - if (valid) { + if (valid > 0) { pcard->cwc = cwc; pcard->cwc_mux = mux; descrambler_open_emm(mux, pcard, caid, cwc_emm); diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 12cd00924..b88393033 100755 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -573,6 +573,9 @@ descrambler_flush_tables( mpegts_mux_t *mux ) if (mux == NULL) return; tvhtrace("descrambler", "mux %p - flush tables", mux); +#if ENABLE_CWC + cwc_caid_update(mux, 0, 0, -1); +#endif pthread_mutex_lock(&mux->mm_descrambler_lock); while ((dt = TAILQ_FIRST(&mux->mm_descrambler_tables)) != NULL) { while ((ds = TAILQ_FIRST(&dt->sections)) != NULL) {