Changeset 5346


Ignore:
Timestamp:
Jun 3, 2011, 12:36:47 AM (8 years ago)
Author:
schlocke
Message:

cccam: outgoing cards forwarded in enhanced sid mode only if incoming
card arrived in enhanced mode

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/module-cccam.c

    r5345 r5346  
    15981598    card->hop = buf[10];
    15991599    card->reshare = buf[11];
     1600    card->is_ext = ext;
     1601    card->card_type = CT_REMOTECARD;
    16001602    set_card_timeout(card);
    16011603    memcpy(card->hexserial, buf + 12, 8); //HEXSERIAL!!
     
    19011903        card->origin_id = card->id;
    19021904        card->grp = rdr->grp;
    1903         card->card_type = CT_REMOTECARD;
    19041905        card->rdr_reshare = rdr->cc_reshare;
    19051906
  • trunk/module-cccam.h

    r5345 r5346  
    103103    SIDTABBITS sidtabno;
    104104    time_t timeout;
     105    uint8_t is_ext;
    105106};
    106107
  • trunk/module-cccshare.c

    r5345 r5346  
    8686
    8787int32_t can_use_ext(struct cc_card *card) {
     88    if (card->card_type == CT_REMOTECARD)
     89        return card->is_ext;
     90       
    8891    if (card->sidtab)
    8992        return (card->sidtab->num_srvid>0);
    9093    else
    91         return ll_count(card->goodsids);
     94        return ll_count(card->goodsids) && ll_count(card->badsids);
    9295    return 0;
    9396}
     
    138141                    ofs+=2;
    139142                    buf[21]++; //nassign
    140                     if (buf[21] >= 200)
     143                    if (buf[21] >= 240)
    141144                        break;
    142145                }
     
    160163                                                ofs+=2;
    161164                                                buf[22]++; //nreject
    162                                                 if (buf[22] >= 200)
     165                                                if (buf[22] >= 240)
    163166                                                        break;
    164167                                        }
    165168                                }
    166169                        }
    167                 }
     170                        if (buf[22] >= 240)
     171                            break;
     172                }
     173               
    168174        } else {
    169175                //assigned sids:
     
    847853                struct s_sidtab *ptr;
    848854                for (j=0,ptr=cfg.sidtab; ptr; ptr=ptr->next,j++) {
    849                     if (!(rdr->sidtabno&((SIDTABBITS)1<<j)) && (!rdr->sidtabok || rdr->sidtabok&((SIDTABBITS)1<<j))) {
     855                    if (!(rdr->sidtabno&((SIDTABBITS)1<<j)) && (rdr->sidtabok&((SIDTABBITS)1<<j))) {
    850856                        int32_t k;
    851857                        for (k=0;k<ptr->num_caid;k++) {
Note: See TracChangeset for help on using the changeset viewer.