From: leslie Date: Wed, 19 Aug 2009 09:13:20 +0000 (+0800) Subject: cardclient: fix endless loop if client vanishes X-Git-Tag: upstream/620~190 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=6c6d2044df25af202f28a80dccc9730456d30bfe;p=sasc-ng.git cardclient: fix endless loop if client vanishes --- diff --git a/systems/cardclient/cc.c b/systems/cardclient/cc.c index d2315f5..d9fcafe 100644 --- a/systems/cardclient/cc.c +++ b/systems/cardclient/cc.c @@ -201,7 +201,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; @@ -226,9 +226,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; }