Changeset 596
- Timestamp:
- 12/01/09 15:25:41 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/cccam-test/module-cccam.c
r595 r596 96 96 void *llist_itr_init(LLIST *l, LLIST_ITR *itr) 97 97 { 98 pthread_mutex_lock(&l->lock);98 // pthread_mutex_lock(&l->lock); 99 99 if (l->first) { 100 100 … … 111 111 void llist_itr_release(LLIST_ITR *itr) 112 112 { 113 pthread_mutex_unlock(&itr->l->lock);113 // pthread_mutex_unlock(&itr->l->lock); 114 114 } 115 115 … … 228 228 229 229 uint32 count; 230 uint16 cur_sid; 230 231 }; 231 232 … … 514 515 515 516 cc->cur_card = NULL; 517 cc->cur_sid = er->srvid; 516 518 517 519 card = llist_itr_init(cc->cards, &itr); … … 519 521 while (card) { 520 522 if (card->caid == er->caid) { // caid matches 523 int s = 0; 524 525 LLIST_ITR sitr; 526 uint16 *sid = llist_itr_init(card->badsids, &sitr); 527 while (sid) { 528 if (*sid == cc->cur_sid) { 529 s = 1; 530 break; 531 } 532 sid = llist_itr_next(&sitr); 533 } 534 llist_itr_release(&sitr); 535 521 536 LLIST_ITR pitr; 522 537 char *prov = llist_itr_init(card->provs, &pitr); 523 while (prov ) {538 while (prov && !s) { 524 539 if (B24(prov) == er->prid) { // provid matches 525 540 if ((h < 0) || (card->hop < h)) { // card is closer … … 567 582 } 568 583 569 if (n) return 0; 570 else return -1; 584 return 0; 571 585 } 572 586 … … 591 605 592 606 card->provs = llist_create(); 607 card->badsids = llist_create(); 593 608 card->id = B32(buf+4); 594 609 card->caid = B16(buf+12); … … 623 638 624 639 llist_destroy(card->provs); 640 llist_destroy(card->badsids); 625 641 free(card); 626 642 … … 636 652 case MSG_CW_NOK1: 637 653 case MSG_CW_NOK2: 638 cs_log("cccam: cw nok"); 654 cs_log("cccam: cw nok, sid = %x", cc->cur_sid); 655 656 int f = 0; 657 LLIST_ITR itr; 658 uint16 *sid = llist_itr_init(cc->cur_card->badsids, &itr); 659 while (sid && !f) { 660 if (*sid == cc->cur_sid) { 661 llist_itr_release(&itr); 662 f = 1; 663 } 664 sid = llist_itr_next(&itr); 665 } 666 llist_itr_release(&itr); 667 668 if (!f) { 669 sid = malloc(sizeof(uint16)); 670 *sid = cc->cur_sid; 671 672 sid = llist_append(cc->cur_card->badsids, sid); 673 cs_debug(" added sid block for card %08x", cc->cur_card->id); 674 } 675 bzero(cc->dcw, 16); 676 return 0; 639 677 break; 640 678 case MSG_CW: … … 663 701 cs_debug("cccam: recv chk - MSG_CW %d - %s", cc->count, cs_hexdump(0, dcw, 16)); 664 702 *rc = 1; 665 //return 0;666 703 return(cc->count); 667 } 668 669 return -1; 704 } else if ((buf[1] == (MSG_CW_NOK1)) || (buf[1] == (MSG_CW_NOK2))) { 705 /*memcpy(dcw, cc->dcw, 16); 706 return *rc = 1; 707 return(cc->count);*/ 708 } 709 710 return (-1); 670 711 } 671 712
Note:
See TracChangeset
for help on using the changeset viewer.