Ticket #2908: mythtv-noredundantids.patch

File mythtv-noredundantids.patch, 1.8 KB (added by david@…, 14 years ago)

Patch to ignore duplicate system ids

  • trunk/libs/libmythtv/dvbdev/dvbci.cpp

     
    980980{
    981981  dbgprotocol("New Conditional Access Support (session id %d)\n", SessionId);
    982982  state = 0;
    983   caSystemIds[numCaSystemIds = 0] = 0;
     983  numCaSystemIds = 0;
     984  memset(caSystemIds, 0, sizeof(caSystemIds));
    984985  needCaPmt = false;
    985986}
    986987
     
    992993       case AOT_CA_INFO: {
    993994            dbgprotocol("%d: <== Ca Info", SessionId());
    994995            int l = 0;
     996            int i;
    995997            const uint8_t *d = GetData(Data, l);
    996998            while (l > 1) {
    997999                  unsigned short id = ((unsigned short)(*d) << 8) | *(d + 1);
    9981000                  dbgprotocol(" %04X", id);
    9991001                  d += 2;
    10001002                  l -= 2;
    1001                   fprintf(stderr, "XXX YYY ZZZ - Got ca system id %hu\n", id);
    1002                   if (numCaSystemIds < MAXCASYSTEMIDS) {
    1003                      caSystemIds[numCaSystemIds++] = id;
    1004                      caSystemIds[numCaSystemIds] = 0;
    1005                      }
    1006                   else
    1007                      esyslog("ERROR: too many CA system IDs!");
    1008                     }
     1003
     1004                  if (numCaSystemIds >= MAXCASYSTEMIDS) {
     1005                    esyslog("ERROR: too many CA system IDs!");
     1006                    break;
     1007                  }
     1008
     1009                  // Make sure the id is not already present
     1010                  for (i = 0; i < numCaSystemIds; i++)
     1011                    if (caSystemIds[i] == id)
     1012                      break;
     1013                 
     1014                  if (i < numCaSystemIds)
     1015                    continue;
     1016
     1017                  caSystemIds[numCaSystemIds++] = id;
     1018            }
    10091019            dbgprotocol("\n");
    10101020            }
    10111021            state = 2;