summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/device.c10
-rw-r--r--client/device.h3
2 files changed, 10 insertions, 3 deletions
diff --git a/client/device.c b/client/device.c
index 570bab2..28cb7dc 100644
--- a/client/device.c
+++ b/client/device.c
@@ -1,5 +1,5 @@
/*
- * $Id: device.c,v 1.18 2008/04/07 14:50:32 schmirl Exp $
+ * $Id: device.c,v 1.18.2.1 2008/04/07 15:07:39 schmirl Exp $
*/
#include "client/device.h"
@@ -54,6 +54,12 @@ cStreamdevDevice::~cStreamdevDevice() {
DELETENULL(m_TSBuffer);
}
+int cStreamdevDevice::ProvidesCa(const cChannel *Channel) const
+{
+ // Encrypted is acceptable for now. Will ask the server later.
+ return Channel->Ca() <= CA_DVB_MAX ? cDevice::ProvidesCa(Channel) : 1;
+}
+
bool cStreamdevDevice::ProvidesSource(int Source) const {
Dprintf("ProvidesSource, Source=%d\n", Source);
return true;
@@ -88,7 +94,7 @@ bool cStreamdevDevice::ProvidesChannel(const cChannel *Channel, int Priority,
if (ClientSocket.DataSocket(siLive) != NULL
&& TRANSPONDER(Channel, m_Channel))
res = true;
- else {
+ else if (ProvidesCa(Channel)) {
res = prio && ClientSocket.ProvidesChannel(Channel, Priority);
ndr = true;
}
diff --git a/client/device.h b/client/device.h
index 0c7e918..ada66de 100644
--- a/client/device.h
+++ b/client/device.h
@@ -1,5 +1,5 @@
/*
- * $Id: device.h,v 1.7 2008/04/07 14:40:39 schmirl Exp $
+ * $Id: device.h,v 1.7.2.1 2008/04/07 15:07:39 schmirl Exp $
*/
#ifndef VDR_STREAMDEV_DEVICE_H
@@ -49,6 +49,7 @@ public:
cStreamdevDevice(void);
virtual ~cStreamdevDevice();
+ virtual int ProvidesCa(const cChannel *Channel) const;
virtual bool ProvidesSource(int Source) const;
virtual bool ProvidesTransponder(const cChannel *Channel) const;
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1,