summaryrefslogtreecommitdiff
path: root/server/connectionIGMP.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/connectionIGMP.c')
-rw-r--r--server/connectionIGMP.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/server/connectionIGMP.c b/server/connectionIGMP.c
index b73324b..ced2209 100644
--- a/server/connectionIGMP.c
+++ b/server/connectionIGMP.c
@@ -40,22 +40,19 @@ bool cConnectionIGMP::SetChannel(cChannel *Channel, in_addr_t Dst)
void cConnectionIGMP::Welcome()
{
- cDevice *device = NULL;
- if (ProvidesChannel(m_Channel, StreamdevServerSetup.IGMPPriority))
- device = SwitchDevice(m_Channel, StreamdevServerSetup.IGMPPriority);
- if (device != NULL) {
- cStreamdevLiveStreamer * liveStreamer = new cStreamdevLiveStreamer(StreamdevServerSetup.IGMPPriority, this);
- SetStreamer(liveStreamer);
- if (liveStreamer->SetChannel(m_Channel, m_StreamType)) {
- liveStreamer->SetDevice(device);
+ if (cStreamdevLiveStreamer::ProvidesChannel(m_Channel, StreamdevServerSetup.IGMPPriority)) {
+ cStreamdevLiveStreamer * liveStreamer = new cStreamdevLiveStreamer(this, m_Channel, StreamdevServerSetup.IGMPPriority, m_StreamType);
+ if (liveStreamer->GetDevice()) {
+ SetStreamer(liveStreamer);
if (!SetDSCP())
LOG_ERROR_STR("unable to set DSCP sockopt");
Dprintf("streamer start\n");
liveStreamer->Start(this);
}
else {
- esyslog("streamdev-server IGMP: SetChannel failed");
SetStreamer(NULL);
+ delete liveStreamer;
+ esyslog("streamdev-server IGMP: SetChannel failed");
}
}
else