]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
cwc: Fix the emm tables shutdown sequence
authorJaroslav Kysela <perex@perex.cz>
Fri, 8 Aug 2014 16:55:23 +0000 (18:55 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 8 Aug 2014 16:55:23 +0000 (18:55 +0200)
src/descrambler/cwc.c
src/descrambler/descrambler.c

index 356a7d693f08be16a5d47ff5b3e8c2dd7a54e5e6..636fe9e292cb7ef917fb34e0493bee4547543c06 100755 (executable)
@@ -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);
index 12cd0092497ad7831f75e19f8305dd5fadbcc0d0..b88393033c85e0e8065023c4f8282731d12b7642 100755 (executable)
@@ -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) {