- Timestamp:
- 06/02/11 23:43:26 (13 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-cccam.c
r5340 r5345 1576 1576 } 1577 1577 1578 #define TIMEOUT_SECONDS 3600 1579 1580 void set_card_timeout(struct cc_card *card) 1581 { 1582 card->timeout = time(NULL)+TIMEOUT_SECONDS+(fast_rnd()-128)*2; 1583 } 1584 1578 1585 struct cc_card *read_card(uint8_t *buf, int32_t ext) { 1579 1586 struct cc_card *card = cs_malloc(&card, sizeof(struct cc_card), QUITERROR); … … 1591 1598 card->hop = buf[10]; 1592 1599 card->reshare = buf[11]; 1600 set_card_timeout(card); 1593 1601 memcpy(card->hexserial, buf + 12, 8); //HEXSERIAL!! 1594 1602 -
trunk/module-cccam.h
r5256 r5345 102 102 uint8_t rdr_reshare; 103 103 SIDTABBITS sidtabno; 104 }; 105 106 struct cc_auto_blocked { 107 uint16_t caid; 108 uint32_t prov; 109 struct cc_srvid srvid; 110 time_t time; 111 }; 112 113 struct cc_current_card { 114 struct cc_card *card; 115 uint32_t prov; 116 struct cc_srvid srvid; 104 time_t timeout; 117 105 }; 118 106 … … 241 229 void cc_free_cardlist(LLIST *card_list, int32_t destroy_list); 242 230 void cc_update_nodeid(); 231 void set_card_timeout(struct cc_card *card); 243 232 244 233 #endif -
trunk/module-cccshare.c
r5304 r5345 537 537 card2->id = 0; 538 538 } 539 else 540 set_card_timeout(card2); 539 541 540 542 return card2; … … 615 617 } 616 618 617 618 619 /** 619 620 * Adds a new card to a cardlist. … … 641 642 } 642 643 } 644 643 645 if (!card2) { //Not found->add it: 644 646 if (free_card) { //Use this card … … 670 672 } 671 673 } 672 674 673 675 if (card2 && card2->hop > card->hop) { //hop is smaller, drop old card 674 676 ll_iter_remove(&it); … … 703 705 break; 704 706 } 707 705 708 if (card2 && card2->hop > card->hop) { //same card, if hop greater drop card 706 709 ll_iter_remove(&it); … … 730 733 } 731 734 735 int32_t card_timed_out(struct cc_card *card) 736 { 737 int32_t res = (card->timeout < time(NULL)); //card is older than 1h? 738 if (res) 739 cs_debug_mask(D_TRACE, "card %08X timed out! refresh forced", card->id?card->id:card->origin_id); 740 return res; 741 } 742 732 743 int32_t find_reported_card(struct cc_card *card1) 733 744 { … … 735 746 struct cc_card *card2; 736 747 while ((card2 = ll_iter_next(&it))) { 737 if (same_card(card1, card2) ) {748 if (same_card(card1, card2) && !card_timed_out(card2)) { 738 749 card1->id = card2->id; //Set old id !! 739 750 cc_free_card(card2);
Note:
See TracChangeset
for help on using the changeset viewer.