1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Now sending CA descriptors to the CAM in the same sequence as they were originally received

This commit is contained in:
Klaus Schmidinger 2003-04-25 14:46:22 +02:00
parent 6fc02ebd08
commit f53912de1e
2 changed files with 16 additions and 11 deletions

View File

@ -2057,3 +2057,5 @@ Video Disk Recorder Revision History
2003-04-25: Version 1.1.29 2003-04-25: Version 1.1.29
- Fixed detecting broken connection to the LIRC daemon (thanks to Ludwig Nussel). - Fixed detecting broken connection to the LIRC daemon (thanks to Ludwig Nussel).
- Now sending CA descriptors to the CAM in the same sequence as they were originally
received (thanks to Stefan Huelswitt).

25
eit.c
View File

@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: eit.c 1.72 2003/04/21 13:21:54 kls Exp $ * $Id: eit.c 1.73 2003/04/25 14:45:32 kls Exp $
***************************************************************************/ ***************************************************************************/
#include "eit.h" #include "eit.h"
@ -1444,18 +1444,21 @@ int cSIProcessor::GetCaDescriptors(int Source, int Transponder, int ServiceId, c
if (BufSize > 0 && Data) { if (BufSize > 0 && Data) {
cMutexLock MutexLock(&caDescriptorsMutex); cMutexLock MutexLock(&caDescriptorsMutex);
int length = 0; int length = 0;
do { for (cCaDescriptor *d = caDescriptors.First(); d; d = caDescriptors.Next(d)) {
for (cCaDescriptor *d = caDescriptors.First(); d; d = caDescriptors.Next(d)) { if (d->source == Source && d->transponder == Transponder && d->serviceId == ServiceId) {
if (d->source == Source && d->transponder == Transponder && d->serviceId == ServiceId && d->caSystem == *CaSystemIds) { const unsigned short *caids = CaSystemIds;
if (length + d->Length() <= BufSize) { do {
memcpy(Data + length, d->Data(), d->Length()); if (d->caSystem == *caids) {
length += d->Length(); if (length + d->Length() <= BufSize) {
memcpy(Data + length, d->Data(), d->Length());
length += d->Length();
}
else
return -1;
} }
else } while (*++caids);
return -1;
}
} }
} while (*++CaSystemIds); }
return length; return length;
} }
return -1; return -1;