summaryrefslogtreecommitdiff
path: root/ci.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2006-08-20 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2006-08-20 18:00:00 +0200
commit0e310c57a4af9e3b3bc87816a60b01790e2c6b89 (patch)
treeb2a129d6049c49f836fb180f4fb6569f3ae5f421 /ci.c
parentf5ad8fc5d7679433faf6a7465b5cfd54a7c10f8b (diff)
downloadvdr-patch-lnbsharing-0e310c57a4af9e3b3bc87816a60b01790e2c6b89.tar.gz
vdr-patch-lnbsharing-0e310c57a4af9e3b3bc87816a60b01790e2c6b89.tar.bz2
Version 1.4.1-5vdr-1.4.1-5
- Replaced the "quick workaround for additional live audio PIDs" in cDvbDevice::SetChannelDevice() with an actual solution in cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs, which caused long switching times or completely blank screens when switching between encrypted channels on the same transponder (reported by Tomas Berglund). - Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skyttä). - Added --remove-destination to the 'cp' command for binaries in the Makefile to avoid a crash in case a new version is installed on a running system (suggested by Petri Hintukainen). - Fixed handling "Ca Info" in case the CAM sends this again if the smart card is replaced with a different one.
Diffstat (limited to 'ci.c')
-rw-r--r--ci.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ci.c b/ci.c
index d1332dd..066acc2 100644
--- a/ci.c
+++ b/ci.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: ci.c 1.44 2006/08/12 10:14:27 kls Exp $
+ * $Id: ci.c 1.45 2006/08/20 11:38:33 kls Exp $
*/
#include "ci.h"
@@ -985,6 +985,7 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
switch (Tag) {
case AOT_CA_INFO: {
dbgprotocol("%d: <== Ca Info", SessionId());
+ numCaSystemIds = 0;
int l = 0;
const uint8_t *d = GetData(Data, l);
while (l > 1) {
@@ -992,13 +993,14 @@ bool cCiConditionalAccessSupport::Process(int Length, const uint8_t *Data)
dbgprotocol(" %04X", id);
d += 2;
l -= 2;
- if (numCaSystemIds < MAXCASYSTEMIDS) {
+ if (numCaSystemIds < MAXCASYSTEMIDS)
caSystemIds[numCaSystemIds++] = id;
- caSystemIds[numCaSystemIds] = 0;
- }
- else
+ else {
esyslog("ERROR: too many CA system IDs!");
+ break;
+ }
}
+ caSystemIds[numCaSystemIds] = 0;
dbgprotocol("\n");
}
state = 2; // got ca info