Changeset 3864
- Timestamp:
- 11/09/10 21:51:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-cccam.c
r3863 r3864 1241 1241 } 1242 1242 1243 void cc_free_cardlist(LLIST *card_list ) {1243 void cc_free_cardlist(LLIST *card_list, int destroy_list) { 1244 1244 if (card_list) { 1245 1245 LL_ITER *it = ll_iter_create(card_list); … … 1250 1250 } 1251 1251 ll_iter_release(it); 1252 ll_destroy_data(card_list);1253 card_list = NULL;1252 if (destroy_list) 1253 ll_destroy_data(card_list); 1254 1254 } 1255 1255 } … … 1264 1264 1265 1265 cs_debug_mask(D_FUT, "cc_free in"); 1266 cc_free_cardlist(cc->cards );1266 cc_free_cardlist(cc->cards, TRUE); 1267 1267 cc_free_reported_carddata(cl, cc->reported_carddatas, 0); 1268 1268 ll_destroy_data(cc->pending_emms); … … 1492 1492 } 1493 1493 1494 void check_peer_changed(struct cc_data *cc, uint8 *node_id, uint8 *version) { 1495 if (memcmp(cc->peer_node_id, node_id, 8) != 0 || memcmp(cc->peer_version, version, 8) != 0) { 1496 //Remote Id has changed, clear cached data: 1497 cc_free_cardlist(cc->cards, FALSE); 1498 free_current_cards(cc->current_cards); 1499 } 1500 } 1501 1494 1502 int cc_parse_msg(struct s_client *cl, uint8 *buf, int l) { 1495 1503 cs_debug_mask(D_FUT, "cc_parse_msg in %d", buf[1]); … … 1514 1522 1515 1523 if (l == 0x48) { //72 bytes: normal server data 1524 check_peer_changed(cc, data, data+8); 1525 1516 1526 memcpy(cc->peer_node_id, data, 8); 1517 1527 memcpy(cc->peer_version, data + 8, 8); … … 2325 2335 return 0; //Old card and new card are equal! Nothing to do! 2326 2336 } 2327 cc_cmd_send(cl, card, 4, MSG_CARD_REMOVED);2328 2337 ll_iter_release(it); 2329 cc->card_removed_count++;2330 2338 return 1; //Card removed! 2331 2339 } … … 2620 2628 } 2621 2629 ll_iter_release(it); 2622 cc_free_cardlist(server_cards );2630 cc_free_cardlist(server_cards, TRUE); 2623 2631 2624 2632 //remove unsed, remaining cards: 2625 cc->card_removed_count += cc_free_reported_carddata(cl, cc->reported_carddatas, 1);2633 cc->card_removed_count += cc_free_reported_carddata(cl, cc->reported_carddatas, TRUE); 2626 2634 2627 2635 cc->reported_carddatas = new_reported_carddatas;
Note:
See TracChangeset
for help on using the changeset viewer.