diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2006-08-20 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2006-08-20 18:00:00 +0200 |
commit | 0e310c57a4af9e3b3bc87816a60b01790e2c6b89 (patch) | |
tree | b2a129d6049c49f836fb180f4fb6569f3ae5f421 /ci.c | |
parent | f5ad8fc5d7679433faf6a7465b5cfd54a7c10f8b (diff) | |
download | vdr-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.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -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 |