Make sure that a FilterStreamer is only started if client supports it

(#261)
Modified Files:
	client/socket.c server/connectionVTP.c server/connectionVTP.h
This commit is contained in:
schmirl 2008-03-13 16:01:17 +00:00
parent 650b4d5443
commit 21da96308d
3 changed files with 22 additions and 9 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: socket.c,v 1.8 2007/04/24 10:57:34 schmirl Exp $ * $Id: socket.c,v 1.9 2008/03/13 16:01:17 schmirl Exp $
*/ */
#include <tools/select.h> #include <tools/select.h>
@ -140,8 +140,14 @@ bool cClientSocket::CheckConnection(void) {
return false; return false;
} }
isyslog("Streamdev: Connected to server %s:%d using capabilities TSPIDS", const char *Filters = "";
RemoteIp().c_str(), RemotePort()); #if VDRVERSNUM >= 10300
if(Command("CAPS FILTERS", 220))
Filters = ",FILTERS";
#endif
isyslog("Streamdev: Connected to server %s:%d using capabilities TSPIDS%s",
RemoteIp().c_str(), RemotePort(), Filters);
return true; return true;
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: connectionVTP.c,v 1.16 2008/03/12 09:36:27 schmirl Exp $ * $Id: connectionVTP.c,v 1.17 2008/03/13 16:01:18 schmirl Exp $
*/ */
#include "server/connectionVTP.h" #include "server/connectionVTP.h"
@ -478,6 +478,7 @@ cConnectionVTP::cConnectionVTP(void):
m_FilterStreamer(NULL), m_FilterStreamer(NULL),
m_LastCommand(NULL), m_LastCommand(NULL),
m_StreamType(stTSPIDS), m_StreamType(stTSPIDS),
m_FiltersSupport(false),
m_LSTEHandler(NULL), m_LSTEHandler(NULL),
m_LSTCHandler(NULL), m_LSTCHandler(NULL),
m_LSTTHandler(NULL) m_LSTTHandler(NULL)
@ -608,8 +609,10 @@ bool cConnectionVTP::CmdCAPS(char *Opts)
// //
// Deliver section filters data in separate, channel-independent data stream // Deliver section filters data in separate, channel-independent data stream
// //
if (strcasecmp(Opts, "FILTERS") == 0) if (strcasecmp(Opts, "FILTERS") == 0) {
m_FiltersSupport = true;
return Respond(220, "Capability \"%s\" accepted", Opts); return Respond(220, "Capability \"%s\" accepted", Opts);
}
#endif #endif
return Respond(561, "Capability \"%s\" not known", Opts); return Respond(561, "Capability \"%s\" not known", Opts);
@ -680,6 +683,7 @@ bool cConnectionVTP::CmdPORT(char *Opts)
#if VDRVERSNUM >= 10300 #if VDRVERSNUM >= 10300
if (id == siLiveFilter) { if (id == siLiveFilter) {
m_FiltersSupport = true;
if(m_FilterStreamer) if(m_FilterStreamer)
m_FilterStreamer->Stop(); m_FilterStreamer->Stop();
delete m_FilterSocket; delete m_FilterSocket;
@ -743,10 +747,12 @@ bool cConnectionVTP::CmdTUNE(char *Opts)
m_LiveStreamer->Start(m_LiveSocket); m_LiveStreamer->Start(m_LiveSocket);
#if VDRVERSNUM >= 10300 #if VDRVERSNUM >= 10300
if(m_FiltersSupport) {
if(!m_FilterStreamer) if(!m_FilterStreamer)
m_FilterStreamer = new cStreamdevFilterStreamer; m_FilterStreamer = new cStreamdevFilterStreamer;
m_FilterStreamer->SetDevice(dev); m_FilterStreamer->SetDevice(dev);
//m_FilterStreamer->SetChannel(chan); //m_FilterStreamer->SetChannel(chan);
}
#endif #endif
return Respond(220, "Channel tuned"); return Respond(220, "Channel tuned");

View File

@ -24,6 +24,7 @@ private:
char *m_LastCommand; char *m_LastCommand;
eStreamType m_StreamType; eStreamType m_StreamType;
bool m_FiltersSupport;
// Members adopted for SVDRP // Members adopted for SVDRP
cRecordings Recordings; cRecordings Recordings;