From 615f101b9dce6ae4a2b7b02866176a413e47169f Mon Sep 17 00:00:00 2001 From: Frank Schmirler Date: Tue, 18 Oct 2011 08:50:54 +0200 Subject: 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. --- server/componentIGMP.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'server/componentIGMP.c') 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); } } -- cgit v1.2.3