Changeset 5226 for trunk/module-cccam.c
- Timestamp:
- 05/12/11 12:32:36 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-cccam.c
r5205 r5226 235 235 236 236 int32_t is_sid_blocked(struct cc_card *card, struct cc_srvid *srvid_blocked) { 237 LL_ITER *it = ll_iter_create(card->badsids);237 LL_ITER it = ll_iter_create(card->badsids); 238 238 struct cc_srvid *srvid; 239 while ((srvid = ll_iter_next( it))) {239 while ((srvid = ll_iter_next(&it))) { 240 240 if (sid_eq(srvid, srvid_blocked)) { 241 241 break; 242 242 } 243 243 } 244 ll_iter_release(it);245 244 return (srvid != 0); 246 245 } 247 246 248 247 int32_t is_good_sid(struct cc_card *card, struct cc_srvid *srvid_good) { 249 LL_ITER *it = ll_iter_create(card->goodsids);248 LL_ITER it = ll_iter_create(card->goodsids); 250 249 struct cc_srvid *srvid; 251 while ((srvid = ll_iter_next( it))) {250 while ((srvid = ll_iter_next(&it))) { 252 251 if (sid_eq(srvid, srvid_good)) { 253 252 break; 254 253 } 255 254 } 256 ll_iter_release(it);257 255 return (srvid != 0); 258 256 } … … 272 270 273 271 void remove_sid_block(struct cc_card *card, struct cc_srvid *srvid_blocked) { 274 LL_ITER *it = ll_iter_create(card->badsids);272 LL_ITER it = ll_iter_create(card->badsids); 275 273 struct cc_srvid *srvid; 276 while ((srvid = ll_iter_next( it)))274 while ((srvid = ll_iter_next(&it))) 277 275 if (sid_eq(srvid, srvid_blocked)) 278 ll_iter_remove_data(it); 279 ll_iter_release(it); 276 ll_iter_remove_data(&it); 280 277 } 281 278 282 279 void remove_good_sid(struct cc_card *card, struct cc_srvid *srvid_good) { 283 LL_ITER *it = ll_iter_create(card->goodsids);280 LL_ITER it = ll_iter_create(card->goodsids); 284 281 struct cc_srvid *srvid; 285 while ((srvid = ll_iter_next( it)))282 while ((srvid = ll_iter_next(&it))) 286 283 if (sid_eq(srvid, srvid_good)) 287 ll_iter_remove_data(it); 288 ll_iter_release(it); 284 ll_iter_remove_data(&it); 289 285 } 290 286 … … 350 346 struct cc_data *cc = cl->cc; 351 347 struct cc_extended_ecm_idx *eei; 352 LL_ITER *it = ll_iter_create(cc->extended_ecm_idx);353 while ((eei = ll_iter_next( it))) {348 LL_ITER it = ll_iter_create(cc->extended_ecm_idx); 349 while ((eei = ll_iter_next(&it))) { 354 350 if (eei->send_idx == send_idx) { 355 351 if (remove) 356 ll_iter_remove( it);352 ll_iter_remove(&it); 357 353 //cs_debug_mask(D_TRACE, "%s get by send-idx: %d FOUND: %d", 358 354 // getprefix(), send_idx, eei->ecm_idx); 359 ll_iter_release(it);360 355 return eei; 361 356 } 362 357 } 363 ll_iter_release(it);364 358 cs_debug_mask(cl->typ=='c'?D_CLIENT:D_READER, "%s get by send-idx: %d NOT FOUND", getprefix(), 365 359 send_idx); … … 371 365 struct cc_data *cc = cl->cc; 372 366 struct cc_extended_ecm_idx *eei; 373 LL_ITER *it = ll_iter_create(cc->extended_ecm_idx);374 while ((eei = ll_iter_next( it))) {367 LL_ITER it = ll_iter_create(cc->extended_ecm_idx); 368 while ((eei = ll_iter_next(&it))) { 375 369 if (eei->ecm_idx == ecm_idx) { 376 370 if (remove) 377 ll_iter_remove( it);371 ll_iter_remove(&it); 378 372 //cs_debug_mask(D_TRACE, "%s get by ecm-idx: %d FOUND: %d", 379 373 // getprefix(), ecm_idx, eei->send_idx); 380 ll_iter_release(it);381 374 return eei; 382 375 } 383 376 } 384 ll_iter_release(it);385 377 cs_debug_mask(cl->typ=='c'?D_CLIENT:D_READER, "%s get by ecm-idx: %d NOT FOUND", getprefix(), 386 378 ecm_idx); … … 399 391 struct cc_data *cc = cl->cc; 400 392 struct cc_extended_ecm_idx *eei; 401 LL_ITER *it = ll_iter_create(cc->extended_ecm_idx);402 while ((eei = ll_iter_next( it))) {393 LL_ITER it = ll_iter_create(cc->extended_ecm_idx); 394 while ((eei = ll_iter_next(&it))) { 403 395 if (eei->card == card) { 404 396 cc_reset_pending(cl, eei->ecm_idx); 405 397 if (eei->free_card) 406 398 free(eei->card); 407 ll_iter_remove_data(it); 408 } 409 } 410 ll_iter_release(it); 399 ll_iter_remove_data(&it); 400 } 401 } 411 402 } 412 403 413 404 void free_extended_ecm_idx(struct cc_data *cc) { 414 405 struct cc_extended_ecm_idx *eei; 415 LL_ITER *it = ll_iter_create(cc->extended_ecm_idx);416 while ((eei = ll_iter_next( it)))406 LL_ITER it = ll_iter_create(cc->extended_ecm_idx); 407 while ((eei = ll_iter_next(&it))) { 417 408 if (eei->free_card) 418 409 free(eei->card); 419 ll_iter_remove_data( it);420 ll_iter_release(it);410 ll_iter_remove_data(&it); 411 } 421 412 } 422 413 … … 961 952 962 953 rdr->nprov = 0; 963 LL_ITER *it2 = ll_iter_create(card->providers);954 LL_ITER it2 = ll_iter_create(card->providers); 964 955 struct cc_provider *provider; 965 956 int32_t p = 0; 966 while ((provider = ll_iter_next( it2))) {957 while ((provider = ll_iter_next(&it2))) { 967 958 if (!cur_er || provider->prov == cur_er->prid || !provider->prov || !cur_er->prid) { 968 959 rdr->prid[p][0] = provider->prov >> 24; … … 981 972 } 982 973 } 983 ll_iter_release(it2);984 974 985 975 if (!rdr->nprov) { //No Providers? Add null-provider: … … 1032 1022 struct cc_data *cc = cl->cc; 1033 1023 struct cc_card *card = NULL; 1034 LL_ITER *it;1024 LL_ITER it; 1035 1025 ECM_REQUEST *cur_er; 1036 1026 struct timeb cur_time; … … 1124 1114 it = ll_iter_create(cc->cards); 1125 1115 struct cc_card *ncard; 1126 while ((ncard = ll_iter_next( it))) {1116 while ((ncard = ll_iter_next(&it))) { 1127 1117 if (ncard == cur_er->origin_card) { //Search the origin card 1128 1118 card = ncard; //found it, use it! … … 1130 1120 } 1131 1121 } 1132 ll_iter_release(it);1133 1122 } 1134 1123 … … 1136 1125 it = ll_iter_create(cc->cards); 1137 1126 struct cc_card *ncard, *xcard = NULL; 1138 while ((ncard = ll_iter_next( it))) {1127 while ((ncard = ll_iter_next(&it))) { 1139 1128 if (ncard->caid == cur_er->caid) { // caid matches 1140 1129 if (is_sid_blocked(ncard, &cur_srvid)) … … 1154 1143 } 1155 1144 else { //card has providers 1156 LL_ITER *it2 = ll_iter_create(ncard->providers);1145 LL_ITER it2 = ll_iter_create(ncard->providers); 1157 1146 struct cc_provider *provider; 1158 while ((provider = ll_iter_next( it2))) {1147 while ((provider = ll_iter_next(&it2))) { 1159 1148 if (provider->prov == cur_er->prid) { // provid matches 1160 1149 if (h < 0 || ncard->hop < h || (ncard->hop == h … … 1166 1155 } 1167 1156 } 1168 ll_iter_release(it2);1169 1157 } 1170 1158 } 1171 1159 } 1172 ll_iter_release(it);1173 1160 if (!card) 1174 1161 card = xcard; //18xx: if request has no provider and we have no card, we try this card … … 1247 1234 //reopen all blocked sids for this srvid: 1248 1235 it = ll_iter_create(cc->cards); 1249 while ((card = ll_iter_next( it))) {1236 while ((card = ll_iter_next(&it))) { 1250 1237 if (card->caid == cur_er->caid) { // caid matches 1251 LL_ITER *it2 = ll_iter_create(card->badsids);1238 LL_ITER it2 = ll_iter_create(card->badsids); 1252 1239 struct cc_srvid *srvid; 1253 while ((srvid = ll_iter_next( it2)))1240 while ((srvid = ll_iter_next(&it2))) 1254 1241 if (srvid->ecmlen > 0 && sid_eq(srvid, &cur_srvid)) //ecmlen==0: From remote peer, so do not remove 1255 ll_iter_remove_data(it2); 1256 ll_iter_release(it2); 1242 ll_iter_remove_data(&it2); 1257 1243 } 1258 1244 } 1259 ll_iter_release(it);1260 1245 } 1261 1246 } … … 1304 1289 struct cc_data *cc = cl->cc; 1305 1290 1306 LL_ITER *it = ll_iter_create(cc->pending_emms);1291 LL_ITER it = ll_iter_create(cc->pending_emms); 1307 1292 uint8_t *emmbuf; 1308 1293 int32_t size = 0; 1309 if ((emmbuf = ll_iter_next( it))) {1294 if ((emmbuf = ll_iter_next(&it))) { 1310 1295 if (!cc->extended_mode) { 1311 1296 if (pthread_mutex_trylock(&cc->ecm_busy) == EBUSY) { //Unlock by NOK or ECM ACK 1312 ll_iter_release(it);1313 1297 return 0; //send later with cc_send_ecm 1314 1298 } … … 1325 1309 cc_cmd_send(cl, emmbuf, size, MSG_EMM_ACK); // send emm 1326 1310 1327 ll_iter_remove_data(it); 1328 } 1329 ll_iter_release(it); 1311 ll_iter_remove_data(&it); 1312 } 1330 1313 1331 1314 return size; … … 1339 1322 uint16_t caid) { 1340 1323 struct cc_data *cc = cl->cc; 1341 LL_ITER *it = ll_iter_create(cc->cards);1324 LL_ITER it = ll_iter_create(cc->cards); 1342 1325 struct cc_card *card; 1343 while ((card = ll_iter_next( it)))1326 while ((card = ll_iter_next(&it))) 1344 1327 if (card->caid == caid && memcmp(card->hexserial, hexserial, 8) == 0) { //found it! 1345 1328 break; 1346 1329 } 1347 ll_iter_release(it);1348 1330 return card; 1349 1331 } … … 1452 1434 if (!cards) 1453 1435 return NULL; 1454 LL_ITER *it = ll_iter_create(cards);1436 LL_ITER it = ll_iter_create(cards); 1455 1437 struct cc_card *card; 1456 while ((card=ll_iter_next( it))) {1438 while ((card=ll_iter_next(&it))) { 1457 1439 if (card->id==card_id) { 1458 1440 break; 1459 1441 } 1460 1442 } 1461 ll_iter_release(it);1462 1443 return card; 1463 1444 } … … 1465 1446 void cc_free_cardlist(LLIST *card_list, int32_t destroy_list) { 1466 1447 if (card_list) { 1467 LL_ITER *it = ll_iter_create(card_list);1448 LL_ITER it = ll_iter_create(card_list); 1468 1449 struct cc_card *card; 1469 while ((card = ll_iter_next( it))) {1450 while ((card = ll_iter_next(&it))) { 1470 1451 cc_free_card(card); 1471 ll_iter_remove(it); 1472 } 1473 ll_iter_release(it); 1452 ll_iter_remove(&it); 1453 } 1474 1454 if (destroy_list) 1475 1455 ll_destroy_data(card_list); … … 1676 1656 struct cc_data *cc = cl->cc; 1677 1657 struct cc_card *card; 1678 LL_ITER *it = ll_iter_create(cc->cards);1679 1680 while ((card = ll_iter_next( it))) {1658 LL_ITER it = ll_iter_create(cc->cards); 1659 1660 while ((card = ll_iter_next(&it))) { 1681 1661 if (card->id == shareid) {// && card->sub_id == b2i (3, buf + 9)) { 1682 1662 //cs_debug_mask(D_CLIENT, "cccam: card %08x removed, caid %04X, count %d", 1683 1663 // card->id, card->caid, ll_count(cc->cards)); 1684 ll_iter_remove( it);1664 ll_iter_remove(&it); 1685 1665 if (cc->last_emm_card == card) { 1686 1666 cc->last_emm_card = NULL; … … 1704 1684 } 1705 1685 } 1706 ll_iter_release(it);1707 1686 } 1708 1687 … … 1711 1690 struct cc_data *cc = cl->cc; 1712 1691 1713 LL_ITER *it = ll_iter_create(cc->cards);1692 LL_ITER it = ll_iter_create(cc->cards); 1714 1693 struct cc_card *card; 1715 while ((card = ll_iter_next( it))) {1694 while ((card = ll_iter_next(&it))) { 1716 1695 if (card == card_to_move) { 1717 ll_iter_remove( it);1696 ll_iter_remove(&it); 1718 1697 break; 1719 1698 } 1720 1699 } 1721 ll_iter_release(it);1722 1700 if (card) { 1723 1701 cs_debug_mask(D_READER, "%s CMD05: Moving card %08X to the end...", getprefix(), card_to_move->id); … … 1915 1893 1916 1894 //Check if this card is from us: 1917 LL_ITER *it = ll_iter_create(card->remote_nodes);1895 LL_ITER it = ll_iter_create(card->remote_nodes); 1918 1896 uint8_t *node_id; 1919 while ((node_id = ll_iter_next( it))) {1897 while ((node_id = ll_iter_next(&it))) { 1920 1898 if (memcmp(node_id, cc_node_id, sizeof(cc_node_id)) == 0) { //this card is from us! 1921 1899 cs_debug_mask(D_READER, "filtered card because of recursive nodeid: id=%08X, caid=%04X", card->id, card->caid); … … 1925 1903 } 1926 1904 } 1927 ll_iter_release(it);1928 1905 1929 1906 //Check Ident filter: … … 1939 1916 it = ll_iter_create(cc->cards); 1940 1917 struct cc_card *old_card; 1941 while ((old_card = ll_iter_next( it))) {1918 while ((old_card = ll_iter_next(&it))) { 1942 1919 if (old_card->id == card->id || //we aready have this card, delete it 1943 1920 same_card(old_card, card)) { … … 1947 1924 } 1948 1925 } 1949 ll_iter_release(it);1950 1926 1951 1927 if (!old_card) { … … 2116 2092 if (cfg.cc_forward_origin_card) { //search my shares for this card: 2117 2093 cs_debug_mask(D_TRACE, "%s forward card: %04X:%04x search share %d", getprefix(), er->caid, er->srvid, server_card->id); 2118 LL_ITER *itr = ll_iter_create(get_and_lock_sharelist());2094 LL_ITER itr = ll_iter_create(get_and_lock_sharelist()); 2119 2095 struct cc_card *card; 2120 2096 struct cc_card *rcard = NULL; 2121 while ((card=ll_iter_next( itr))) {2097 while ((card=ll_iter_next(&itr))) { 2122 2098 if (card->id == server_card->id) { //found it 2123 2099 break; 2124 2100 } 2125 2101 } 2126 ll_iter_release(itr);2127 2102 cs_debug_mask(D_TRACE, "%s forward card: share %d found: %d", getprefix(), server_card->id, card?1:0); 2128 2103 … … 2142 2117 2143 2118 itr = ll_iter_create(rcc->cards); 2144 while ((rcard=ll_iter_next( itr))) {2119 while ((rcard=ll_iter_next(&itr))) { 2145 2120 if (rcard->id == card->origin_id) //found it! 2146 2121 break; 2147 2122 } 2148 ll_iter_release(itr);2149 2123 } 2150 2124 else
Note:
See TracChangeset
for help on using the changeset viewer.