Changeset 3682
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r3680 r3682 500 500 ushort idx; 501 501 ulong prid; 502 struct s_reader * reader0;503 int reader[CS_MAXREADER];502 struct s_reader *selected_reader; 503 int matching_rdr[CS_MAXREADER]; 504 504 struct s_client *client; //contains pointer to 'c' client while running in 'r' client 505 505 int cpti; // client pending table index -
trunk/module-dvbapi.c
r3681 r3682 1743 1743 for (i=0;i<MAX_DEMUX;i++) { 1744 1744 if (demux[i].program_number==er->srvid) { 1745 demux[i].rdr=er-> reader0;1745 demux[i].rdr=er->selected_reader; 1746 1746 1747 1747 if (er->rc<=3 && demux[i].pidindex==-1 && er->caid!=0) { … … 1796 1796 if(ecmtxt != NULL) { 1797 1797 fprintf(ecmtxt, "caid: 0x%04X\npid: 0x%04X\nprov: 0x%06X\n", er->caid, er->pid, (uint) er->prid); 1798 fprintf(ecmtxt, "reader: %s\n", er-> reader0->label);1799 if (er-> reader0->typ & R_IS_CASCADING)1800 fprintf(ecmtxt, "from: %s\n", er-> reader0->device);1798 fprintf(ecmtxt, "reader: %s\n", er->selected_reader->label); 1799 if (er->selected_reader->typ & R_IS_CASCADING) 1800 fprintf(ecmtxt, "from: %s\n", er->selected_reader->device); 1801 1801 else 1802 1802 fprintf(ecmtxt, "from: local\n"); 1803 fprintf(ecmtxt, "protocol: %s\n", er-> reader0->ph.desc);1804 fprintf(ecmtxt, "hops: %d\n", er-> reader0->cc_currenthops);1803 fprintf(ecmtxt, "protocol: %s\n", er->selected_reader->ph.desc); 1804 fprintf(ecmtxt, "hops: %d\n", er->selected_reader->cc_currenthops); 1805 1805 fprintf(ecmtxt, "ecm time: %.3f\n", (float) client->cwlastresptime/1000); 1806 1806 fprintf(ecmtxt, "cw0: %s\n", cs_hexdump(1,demux[i].lastcw[0],8)); -
trunk/oscam.c
r3680 r3682 1140 1140 //cs_log("cache1 found: grp=%lX cgrp=%lX", grp, ecmc->grp); 1141 1141 memcpy(er->cw, ecmc->cw, 16); 1142 er-> reader0= ecmc->reader;1142 er->selected_reader = ecmc->reader; 1143 1143 return(1); 1144 1144 } … … 1154 1154 // disable cache2 1155 1155 if (!cur_client()->reader->cachecm) return(0); 1156 struct s_reader *save = er-> reader0;1156 struct s_reader *save = er->selected_reader; 1157 1157 int rc = check_ecmcache1(er, grp); 1158 er-> reader0= save;1158 er->selected_reader = save; 1159 1159 return rc; 1160 1160 } … … 1175 1175 memcpy(ecmidx->cw, er->cw, 16); 1176 1176 ecmidx->caid = er->caid; 1177 ecmidx->grp = er-> reader0->grp;1178 ecmidx->reader = er-> reader0;1177 ecmidx->grp = er->selected_reader->grp; 1178 ecmidx->reader = er->selected_reader; 1179 1179 //cs_ddump(ecmcache[*ecmidx].ecmd5, CS_ECMSTORESIZE, "ECM stored (idx=%d)", *ecmidx); 1180 1180 } … … 1368 1368 } 1369 1369 1370 er-> reader0=reader;1370 er->selected_reader=reader; 1371 1371 //cs_log("answer from reader %d (rc=%d)", er->reader[0], er->rc); 1372 1372 er->caid=er->ocaid; … … 1523 1523 // add marker to reader if ECM_REQUEST was betatunneled 1524 1524 if(er->btun) 1525 snprintf(sby, sizeof(sby)-1, " by %s(btun)", er-> reader0->label);1525 snprintf(sby, sizeof(sby)-1, " by %s(btun)", er->selected_reader->label); 1526 1526 else 1527 snprintf(sby, sizeof(sby)-1, " by %s", er-> reader0->label);1527 snprintf(sby, sizeof(sby)-1, " by %s", er->selected_reader->label); 1528 1528 } 1529 1529 if (er->rc<4) er->rcEx=0; … … 1545 1545 #endif 1546 1546 1547 send_reader_stat(get_ridx(er-> reader0), er, er->rc);1547 send_reader_stat(get_ridx(er->selected_reader), er, er->rc); 1548 1548 1549 1549 cs_log("%s (%04X&%06X/%04X/%02X:%04X): %s (%d ms)%s (of %d avail %d)%s%s", … … 1555 1555 snprintf(client->lastreader, sizeof(client->lastreader)-1, "%s", sby); 1556 1556 else if ((er->rc == 1) || (er->rc == 2)) 1557 snprintf(client->lastreader, sizeof(client->lastreader)-1, "by %s (cache)", er-> reader0->label);1557 snprintf(client->lastreader, sizeof(client->lastreader)-1, "by %s (cache)", er->selected_reader->label); 1558 1558 else 1559 1559 snprintf(client->lastreader, sizeof(client->lastreader)-1, "%s", stxt[er->rc]); … … 1570 1570 //if(client->au<0) 1571 1571 //{ 1572 struct s_reader *cur = er-> reader0;1572 struct s_reader *cur = er->selected_reader; 1573 1573 1574 1574 if (cur->typ == R_CCCAM && !cur->caid[0] && !cur->audisabled && 1575 cur->card_system == get_cardsystem(er->caid) && hexserialset(er-> reader0))1576 client->aureader= er-> reader0;1575 cur->card_system == get_cardsystem(er->caid) && hexserialset(er->selected_reader)) 1576 client->aureader= er->selected_reader; 1577 1577 else if((er->caid == cur->caid[0]) && (!cur->audisabled)) { 1578 client->aureader = er-> reader0; // First chance - check whether actual reader can AU1578 client->aureader = er->selected_reader; // First chance - check whether actual reader can AU 1579 1579 } else { 1580 1580 for (cur=first_reader; cur ; cur=cur->next) { //second chance loop through all readers to find an AU reader … … 1686 1686 if (ert->rc<100) { 1687 1687 //cs_debug_mask(D_TRACE, "chk_dcw: already done rc=%d %s", er->rc, reader[er->reader[0]].label); 1688 send_reader_stat(get_ridx(er-> reader0), er, (er->rc <= 0)?4:0);1688 send_reader_stat(get_ridx(er->selected_reader), er, (er->rc <= 0)?4:0); 1689 1689 return; // already done 1690 1690 } … … 1707 1707 } 1708 1708 ert->rcEx=0; 1709 ert-> reader0=er->reader0;1709 ert->selected_reader=er->selected_reader; 1710 1710 memcpy(ert->cw , er->cw , sizeof(er->cw)); 1711 1711 #ifdef CS_WITH_GBOX … … 1717 1717 //save reader informations for loadbalance-statistics: 1718 1718 ECM_REQUEST *save_ert = ert; 1719 struct s_reader *save_ridx = er-> reader0;1719 struct s_reader *save_ridx = er->selected_reader; 1720 1720 1721 1721 // 1722 1722 int i; 1723 ert-> reader0=0; //FIXME or should this have been ert->reader[get_ridx(er->reader0)]=0; dont think so but cannot be sure - dingo1723 ert->selected_reader=0; //FIXME or should this have been ert->matching_rdr[get_ridx(er->selected_reader)]=0; dont think so but cannot be sure - dingo 1724 1724 struct s_reader *rdr; 1725 1725 for (i=0,rdr=first_reader; (ert) && rdr ; rdr=rdr->next, i++) 1726 if (ert-> reader[i]) // we have still another chance1726 if (ert->matching_rdr[i]) // we have still another chance 1727 1727 ert=(ECM_REQUEST *)0; 1728 1728 if (ert) ert->rc=4; … … 1893 1893 default: 1894 1894 case 0: 1895 if (er-> reader[i]&flag){1895 if (er->matching_rdr[i]&flag){ 1896 1896 cs_debug_mask(D_TRACE, "request_cw1 to reader %s ridx=%d fd=%d", rdr->label, i, rdr->fd); 1897 1897 status = write_ecm_request(rdr->fd, er); … … 1901 1901 case 1: 1902 1902 if (!(rdr->typ & R_IS_NETWORK)) 1903 if (er-> reader[i]&flag) {1903 if (er->matching_rdr[i]&flag) { 1904 1904 cs_debug_mask(D_TRACE, "request_cw2 to reader %s ridx=%d fd=%d", rdr->label, i, rdr->fd); 1905 1905 status = write_ecm_request(rdr->fd, er); … … 1910 1910 //cs_log("request_cw3 ridx=%d fd=%d", i, rdr->fd); 1911 1911 if ((rdr->typ & R_IS_NETWORK)) 1912 if (er-> reader[i]&flag) {1912 if (er->matching_rdr[i]&flag) { 1913 1913 cs_debug_mask(D_TRACE, "request_cw3 to reader %s ridx=%d fd=%d", rdr->label, i, rdr->fd); 1914 1914 status = write_ecm_request(rdr->fd, er); … … 2137 2137 for (i=m=0,rdr=first_reader; rdr ; rdr=rdr->next, i++) { 2138 2138 if (matching_reader(er, rdr)) { 2139 m|=er-> reader[i] = (rdr->fallback)? 2: 1;2139 m|=er->matching_rdr[i] = (rdr->fallback)? 2: 1; 2140 2140 if (cfg->lb_mode) { 2141 2141 er->reader_avail++; //count regardless of fallback … … 2150 2150 } 2151 2151 if (cfg->lb_mode) { 2152 recv_best_reader(er, er-> reader);2152 recv_best_reader(er, er->matching_rdr); 2153 2153 for (i=m=0,rdr=first_reader; rdr ; rdr=rdr->next, i++) { 2154 if (er-> reader[i]) {2155 er-> reader[i] = 1 ; //needed because value 2 means something different in recv_best_reader; now it means fallback!!!2156 m|=er-> reader[i]; //or should this be m|=er->reader[i] = (rdr->fallback)? 2: 1;2154 if (er->matching_rdr[i]) { 2155 er->matching_rdr[i] = 1 ; //needed because value 2 means something different in recv_best_reader; now it means fallback!!! 2156 m|=er->matching_rdr[i]; //or should this be m|=er->reader[i] = (rdr->fallback)? 2: 1; 2157 2157 if (!rdr->fallback) // do not count fallback readers (==2: fallback) 2158 2158 er->reader_count++; … … 2172 2172 case 2: 2173 2173 for (i=0,rdr=first_reader; rdr ; rdr=rdr->next, i++) 2174 er-> reader[i]>>=1;2174 er->matching_rdr[i]>>=1; 2175 2175 } 2176 2176 } … … 2377 2377 for (j=0, act=1, rdr=first_reader; (act) && rdr ; rdr=rdr->next, j++) { 2378 2378 if (cfg->preferlocalcards && !er->locals_done) { 2379 if ((er-> reader[j]&1) && !(rdr->typ & R_IS_NETWORK))2379 if ((er->matching_rdr[j]&1) && !(rdr->typ & R_IS_NETWORK)) 2380 2380 act=0; 2381 2381 } else if (cfg->preferlocalcards && er->locals_done) { 2382 if ((er-> reader[j]&1) && (rdr->typ & R_IS_NETWORK))2382 if ((er->matching_rdr[j]&1) && (rdr->typ & R_IS_NETWORK)) 2383 2383 act=0; 2384 2384 } else { 2385 if (er-> reader[j]&1)2385 if (er->matching_rdr[j]&1) 2386 2386 act=0; 2387 2387 } … … 2427 2427 struct s_reader *rdr; 2428 2428 for (r=0,rdr=first_reader; rdr ; rdr=rdr->next, r++) 2429 if (er-> reader[r])2429 if (er->matching_rdr[r]) 2430 2430 send_reader_stat(r, er, 5); 2431 2431 }
Note:
See TracChangeset
for help on using the changeset viewer.