From 6c6d2044df25af202f28a80dccc9730456d30bfe Mon Sep 17 00:00:00 2001 From: leslie Date: Wed, 19 Aug 2009 17:13:20 +0800 Subject: [PATCH] cardclient: fix endless loop if client vanishes --- systems/cardclient/cc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; } -- 2.39.5