Changeset 1761


Ignore:
Timestamp:
Mar 3, 2010, 10:16:19 AM (10 years ago)
Author:
landlord
Message:

module-cccam: server improvements, thanks to Digital and dpeddi.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/module-cccam.c

    r1750 r1761  
    10181018  for (r=0; r<CS_MAXREADER; r++) {
    10191019    if (reader[r].caid[0]) {
    1020       memset(buf, 0, sizeof(buf));
    1021 
    1022       buf[0] = id >> 24;
    1023       buf[1] = id >> 16;
    1024       buf[2] = id >> 8;
    1025       buf[3] = id & 0xff;
    1026       buf[8] = reader[r].caid[0] >> 8;
    1027       buf[9] = reader[r].caid[0] & 0xff;
    1028       buf[10] = hop;
    1029       buf[11] = reshare;
    1030       buf[20] = reader[r].nprov;
    1031 
    1032       for (j=0; j<reader[r].nprov; j++) {
    1033         memcpy(buf + 21 + (j*7), reader[r].prid[j]+0, 3);
     1020      if (reader[r].tcp_connected || reader[r].card_status == CARD_INSERTED) {
     1021        memset(buf, 0, sizeof(buf));
     1022
     1023        buf[0] = id >> 24;
     1024        buf[1] = id >> 16;
     1025        buf[2] = id >> 8;
     1026        buf[3] = id & 0xff;
     1027        buf[8] = reader[r].caid[0] >> 8;
     1028        buf[9] = reader[r].caid[0] & 0xff;
     1029        buf[10] = hop;
     1030        buf[11] = reshare;
     1031        buf[20] = reader[r].nprov;
     1032
     1033        for (j=0; j<reader[r].nprov; j++)
     1034          if (reader[r].card_status == CARD_INSERTED)
     1035              memcpy(buf + 21 + (j*7), reader[r].prid[j]+1, 3);
     1036          else
     1037              memcpy(buf + 21 + (j*7), reader[r].prid[j], 3);
     1038
     1039        buf[21 + (j*7)] = 1;
     1040        memcpy(buf + 22 + (j*7), cc->node_id, 8);
     1041
     1042        cc_cmd_send(buf, 30 + (j*7), MSG_NEW_CARD);
     1043
     1044        id++;
    10341045      }
    1035 
    1036       buf[21 + (j*7)] = 1;
    1037       memcpy(buf + 22 + (j*7), cc->node_id, 8);
    1038 
    1039       cc_cmd_send(buf, 30 + (j*7), MSG_NEW_CARD);
    1040 
    1041       id++;
    1042     }
     1046    }
     1047
    10431048
    10441049    if (reader[r].ftab.filts) {
     
    10781083{
    10791084  int i;
     1085  ulong cmi;
    10801086  uint seed;
    10811087  uint8 buf[CC_MAXMSGSIZE];
     
    11551161  // send passwd ack
    11561162  memset(buf, 0, 20);
    1157   memcpy(buf, "CCcam\0", 6);
     1163  memcpy(buf, "CCcam", 5);
    11581164  cs_ddump(buf, 20, "cccam: send ack:");
    11591165  cc_crypt(&cc->block[ENCRYPT], buf, 20, ENCRYPT);
     
    11771183  cc_srv_report_cards();
    11781184
     1185  cmi = 0;
    11791186  // check for clienttimeout, if timeout occurs try to send keepalive
    1180   for(;;)
    1181   {
    1182     i=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle);
    1183      
    1184     if (i == -9)
    1185     {
    1186       if (cc_cmd_send(NULL, 0, MSG_KEEPALIVE) > 0)
    1187       {
    1188         cs_debug("cccam: keepalive");
    1189         i = 1;
     1187  for (;;) {
     1188    i=process_input(mbuf, sizeof(mbuf), 10); //cfg->cmaxidle);
     1189    if (i == -9) {
     1190      cc_srv_report_cards();
     1191      cmi += 10;
     1192      if (cmi >= cfg->cmaxidle) {
     1193        //cs_log("cccam: keepalive after %d sec", cfg->cmaxidle);
     1194        cmi = 0;
     1195        if (cc_cmd_send(NULL, 0, MSG_KEEPALIVE) > 0) {
     1196          cs_debug("cccam: keepalive");
     1197          i = 1;
     1198        }
    11901199      }
    1191     }
    1192      
    1193     if (i <= 0)
    1194     {
    1195       break;
    1196     }
     1200    } else if (i <= 0) break;
    11971201  }
    11981202
Note: See TracChangeset for help on using the changeset viewer.