From: Jaroslav Kysela Date: Fri, 9 Nov 2018 08:12:00 +0000 (+0100) Subject: cclient: cc_remove_card - move state to ECM_INIT when active card is removed, issue... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=42fb10e771e23c58f1536bca28ddb3f85781ed2b;p=thirdparty%2Ftvheadend.git cclient: cc_remove_card - move state to ECM_INIT when active card is removed, issue #5314 --- diff --git a/src/descrambler/cclient.c b/src/descrambler/cclient.c index 7fba84fcb..ee5a3a36e 100644 --- a/src/descrambler/cclient.c +++ b/src/descrambler/cclient.c @@ -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; + } } /**