Changeset 4557
- Timestamp:
- 01/22/11 01:52:53 (13 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-stat.c
r4546 r4557 468 468 } 469 469 470 if (stat->ecm_count < 0||(stat->ecm_count > cfg->lb_max_ecmcount && stat->time_avg > (int)cfg->ftimeout)) {470 if (stat->ecm_count < 0||(stat->ecm_count > cfg->lb_max_ecmcount && stat->time_avg > cfg->lb_retrylimit)) { 471 471 cs_debug_mask(D_TRACE, "loadbalancer: max ecms (%d) reached by reader %s, resetting statistics", cfg->lb_max_ecmcount, rdr->label); 472 472 reset_stat(er->caid, er->prid, er->srvid); -
trunk/oscam.c
r4551 r4557 1397 1397 ecmidx->caid = er->caid; 1398 1398 ecmidx->grp = grp; 1399 ecmidx->reader = er->selected_reader;1400 1399 1401 1400 return(0); … … 1423 1422 continue; 1424 1423 1425 cs_debug_mask(D_TRACE, "cache: ecm %04X found: ccaid=%04X caid=%04X grp=%lld cgrp=%lld count=%d", lc, er->caid, ecmc->caid, grp, ecmc->grp, count);1424 //cs_debug_mask(D_TRACE, "cache: ecm %04X found: ccaid=%04X caid=%04X grp=%lld cgrp=%lld count=%d", lc, er->caid, ecmc->caid, grp, ecmc->grp, count); 1426 1425 1427 1426 if (!(grp & ecmc->grp)) … … 1435 1434 return 1; 1436 1435 } 1437 cs_debug_mask(D_TRACE, "cache: %04X not found count=%d", lc, count);1436 //cs_debug_mask(D_TRACE, "cache: %04X not found count=%d", lc, count); 1438 1437 return 0; 1439 1438 } … … 1473 1472 for (lp=(ushort *)er->ecm+(er->l>>2), lc=0; lp>=(ushort *)er->ecm; lp--) 1474 1473 lc^=*lp; 1475 cs_debug_mask(D_TRACE, "store_cw_in_cache: ecm=%04X grp=%lld", lc, grp);1474 //cs_debug_mask(D_TRACE, "store_cw_in_cache: ecm=%04X grp=%lld", lc, grp); 1476 1475 } 1477 1476 //cs_ddump(cwcache[*cwidx].ecmd5, CS_ECMSTORESIZE, "ECM stored (idx=%d)", *cwidx); … … 1671 1670 for (i=0; i<n; i++) { 1672 1671 ecm = &cl->ecmtask[i]; 1673 if (ecm->rc == E_99 && ecm->caid==er->caid && memcmp(ecm->ecmd5, er->ecmd5, CS_ECMSTORESIZE)==0) {1672 if (ecm->rc == E_99 && ecm->caid==er->caid && !memcmp(ecm->ecmd5, er->ecmd5, CS_ECMSTORESIZE)) { 1674 1673 er->cpti = ecm->cpti; 1675 1674 //cs_log("distribute %04X:%06X:%04X cpti %d to client %s", ecm->caid, ecm->prid, ecm->srvid, ecm->cpti, username(cl)); … … 1771 1770 { 1772 1771 for (i=0; (n<0) && (i<CS_MAXPENDING); i++) 1773 if (cl->ecmtask[i].rc< 99)1772 if (cl->ecmtask[i].rc<E_99) 1774 1773 er=&cl->ecmtask[n=i]; 1775 1774 } … … 2026 2025 ECM_REQUEST *ert; 2027 2026 2028 //cs_log("dcw check from reader % d for idx %d (rc=%d)", er->selected_reader, er->cpti, er->rc);2027 //cs_log("dcw check from reader %s for idx %d (rc=%d)", er->selected_reader->label, er->cpti, er->rc); 2029 2028 ert=&cl->ecmtask[er->cpti]; 2030 2029 if (ert->rc<E_99) { … … 2033 2032 return; // already done 2034 2033 } 2035 if( (er->caid!=ert->caid) || memcmp(er->ecmd5, ert->ecmd5, sizeof(er->ecmd5)) ) 2034 if( (er->caid!=ert->caid) || memcmp(er->ecmd5, ert->ecmd5, sizeof(er->ecmd5)) ) { 2035 //cs_debug_mask(D_TRACE, "OBSOLETE? %04X / %04X", er->caid, ert->caid); 2036 2036 return; // obsolete 2037 2038 ert->rcEx=er->rcEx; 2039 strcpy(ert->msglog, er->msglog); 2040 ert->selected_reader=er->selected_reader; 2037 } 2041 2038 2042 2039 if (er->rc>=E_RDR_FOUND) 2043 2040 { 2044 switch(er->rc) 2045 { 2046 case E_CACHE2: 2047 ert->rc=E_CACHE2; 2048 break; 2049 case E_EMU: 2050 ert->rc=E_EMU; 2051 break; 2052 default: 2053 ert->rc=E_FOUND; 2054 } 2041 ert->selected_reader=er->selected_reader; 2042 2043 switch(er->rc) 2044 { 2045 case E_CACHE2: 2046 ert->rc=E_CACHE2; 2047 break; 2048 case E_EMU: 2049 ert->rc=E_EMU; 2050 break; 2051 default: 2052 ert->rc=E_FOUND; 2053 } 2055 2054 2056 2057 2055 ert->rcEx=0; 2056 memcpy(ert->cw , er->cw , sizeof(er->cw)); 2058 2057 #ifdef CS_WITH_GBOX 2059 ert->gbxCWFrom=er->gbxCWFrom; 2060 #endif 2061 } else { // not found (from ONE of the readers !) er->rc==E_RDR_NOTFOUND 2062 struct s_reader *rdr; 2063 if (er->selected_reader) { 2064 LL_ITER *itr = ll_iter_create(er->matching_rdr); 2065 while ((rdr = ll_iter_next(itr))) 2066 if (rdr == er->selected_reader) { 2067 ll_iter_remove(itr); 2068 break; 2069 } 2070 ll_iter_release(itr); 2071 } 2072 2073 if (ert) 2074 if (ll_has_elements(ert->matching_rdr)) {//we have still another chance 2058 ert->gbxCWFrom=er->gbxCWFrom; 2059 #endif 2060 } else { // not found (from ONE of the readers !) er->rc==E_RDR_NOTFOUND 2061 ert->rcEx=er->rcEx; 2062 strcpy(ert->msglog, er->msglog); 2063 2064 ll_remove(ert->matching_rdr, er->selected_reader); 2065 2066 if (ll_has_elements(ert->matching_rdr)) {//we have still another chance 2075 2067 ert->selected_reader=NULL; 2076 2068 ert=NULL; 2077 2069 } 2078 2070 //at this point ert is only not NULL when it has no matching readers... 2079 2071 if (ert) ert->rc=E_NOTFOUND; //so we set the return code … … 2479 2471 // cache1 2480 2472 if (check_cwcache1(er, client->grp)) 2481 er->rc = E_CACHE1;2473 er->rc = E_CACHE1; 2482 2474 else if (check_and_store_ecmcache(er, client->grp)) 2483 2475 return;
Note:
See TracChangeset
for help on using the changeset viewer.