summaryrefslogtreecommitdiff
path: root/server/componentIGMP.c
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2011-10-18 08:50:54 +0200
committerFrank Schmirler <vdr@schmirler.de>2011-10-18 08:50:54 +0200
commit615f101b9dce6ae4a2b7b02866176a413e47169f (patch)
treec0bb6929e51b0d1c6e00274e0ffdbe0888dd88ee /server/componentIGMP.c
parent2fae067cfef6f930415e8b3d4c4713b5de91b1eb (diff)
downloadvdr-plugin-streamdev-615f101b9dce6ae4a2b7b02866176a413e47169f.tar.gz
vdr-plugin-streamdev-615f101b9dce6ae4a2b7b02866176a413e47169f.tar.bz2
fixed regression of "live TV must be switched in VDR main thread" change:
deadlock in IGMP streaming server when switching live TV. Previously cComponentIGMP::Accept did all the work including the channel switch with the new cConnectionIGMP waiting for MainThreadHook. But as the new connection is stored *after* Accept, MainThreadHook didn't see it and so wasn't able to switch. The streamdev main thread waited forever. Moved the main work into cComponentIGMP::Welcome.
Diffstat (limited to 'server/componentIGMP.c')
-rw-r--r--server/componentIGMP.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/server/componentIGMP.c b/server/componentIGMP.c
index d9f8811..9ad7d30 100644
--- a/server/componentIGMP.c
+++ b/server/componentIGMP.c
@@ -434,7 +434,7 @@ void cComponentIGMP::IGMPStartMulticast(cMulticastGroup* Group)
if (g > MULTICAST_PRIV_MIN && g <= MULTICAST_PRIV_MAX) {
cChannel *channel = Channels.GetByNumber(g - MULTICAST_PRIV_MIN);
Group->connection = (cConnectionIGMP*) NewClient();
- if (!Group->connection->Start(channel, Group->group)) {
+ if (!Group->connection->SetChannel(channel, Group->group)) {
DELETENULL(Group->connection);
}
}