]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
cclient: cc_remove_card - move state to ECM_INIT when active card is removed, issue...
authorJaroslav Kysela <perex@perex.cz>
Fri, 9 Nov 2018 08:12:00 +0000 (09:12 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 9 Nov 2018 08:12:00 +0000 (09:12 +0100)
src/descrambler/cclient.c

index 7fba84fcba7ffbc5a84ed5098d94dbaa543fb92d..ee5a3a36e2c7f32b3b23101143ce3ba4471d15e0 100644 (file)
@@ -223,7 +223,7 @@ cc_remove_card(cclient_t *cc, cc_card_data_t *pcard)
   cc_ecm_section_t *es, *esn;
   emm_provider_t *emmp;
   char buf[256];
-  int i;
+  int i, changed = 0;
 
   tvhinfo(cc->cc_subsys, "%s: card %s removed", cc->cc_name,
           cc_get_card_name(pcard, buf, sizeof(buf)));
@@ -238,6 +238,7 @@ cc_remove_card(cclient_t *cc, cc_card_data_t *pcard)
           emmp = pcard->cs_ra.providers;
           for (i = 0; i < pcard->cs_ra.providers_count; i++, emmp++) {
             if (emmp->id == es->es_provid) {
+              changed = 1;
               cc_free_ecm_section(es);
               break;
             }
@@ -249,6 +250,11 @@ cc_remove_card(cclient_t *cc, cc_card_data_t *pcard)
     }
 
   cc_free_card(pcard);
+
+  if (changed) {
+    ct->cs_capid = 0xffff;
+    ct->ecm_state = ECM_INIT;
+  }
 }
 
 /**