From: leslie Date: Wed, 19 Aug 2009 22:11:27 +0000 (+0800) Subject: backport fixes from trunk X-Git-Tag: 0.9.3~6 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=652cafe24903e891cab17fdd24f89ed0b8a1e923;p=sasc-ng.git backport fixes from trunk --- diff --git a/cam.c b/cam.c index 3cc79fb..d5ca3a7 100644 --- a/cam.c +++ b/cam.c @@ -1275,6 +1275,7 @@ void cEcmHandler::ParseCAInfo(int SysId) cEcmInfo *n; while((n=ecms.First())) { ecms.Del(n,false); + n->SetSource(sid,filterSource,filterTransponder); overrides.UpdateEcm(n,dolog); LBSTARTF(L_CORE_ECM); if(dolog) LBPUT("%s: found %04x(%04x) (%s) id %04x with ecm %x/%x ",id,n->caId,n->emmCaId,n->name,n->provId,n->ecm_pid,n->ecm_table); @@ -1298,7 +1299,6 @@ void cEcmHandler::ParseCAInfo(int SysId) } if(n) { if(dolog) LBPUT("(new)"); - n->SetSource(sid,filterSource,filterTransponder); ecmList.Add(n); AddEcmPri(n); } diff --git a/systems/cardclient/cc.c b/systems/cardclient/cc.c index 1f73c96..655fab6 100644 --- a/systems/cardclient/cc.c +++ b/systems/cardclient/cc.c @@ -195,7 +195,7 @@ cSystemCardClient::cSystemCardClient(void) bool cSystemCardClient::ProcessECM(const cEcmInfo *ecm, unsigned char *data) { - cCardClient *startCc=cc; + cCardClient *startCc=cc, *oldcc; do { if(cc) { cTimeMs start; @@ -220,9 +220,10 @@ bool cSystemCardClient::ProcessECM(const cEcmInfo *ecm, unsigned char *data) } } if(!cc) PRINTF(L_CC_CORE,"cc-loop"); + oldcc=cc; cc=staticCcl.FindBySysId(ecm->caId,cc); if(cc && cc!=startCc) PRINTF(L_CC_CORE,"now trying client %s (%s:%d)",cc->Name(),cc->hostname,cc->port); - } while(cc!=startCc); + } while(cc!=startCc && cc!=oldcc); return false; }