summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2011-11-13 23:27:46 +0100
committerFrank Schmirler <vdr@schmirler.de>2011-11-13 23:27:46 +0100
commitf9224d0618777947f1bc242111f792657e3f5908 (patch)
tree315a1d822e426e737ad145a53bb1c1390a2baed2
parent30674fb6c83fea4f20bd54b70ed23f4defbb9dbd (diff)
downloadvdr-plugin-streamdev-f9224d0618777947f1bc242111f792657e3f5908.tar.gz
vdr-plugin-streamdev-f9224d0618777947f1bc242111f792657e3f5908.tar.bz2
properly shutdown IGMP timeout handler thread when the plugin is stopped.
Fixes occasional segfaults on VDR exit.
-rw-r--r--HISTORY2
-rw-r--r--server/componentIGMP.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/HISTORY b/HISTORY
index b09502d..5332b1b 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,8 @@
VDR Plugin 'streamdev' Revision History
---------------------------------------
+- properly shutdown IGMP timeout handler thread when the plugin is stopped.
+ Fixes occasional segfaults on VDR exit.
- fixed memory leak in libdvbmpeg read_pes (thanks to Ville Skyttä)
- dropped several unused functions in libdvbmpeg
- restricted VTP command RENR to liemikuutio patch < 1.32. Build fails with
diff --git a/server/componentIGMP.c b/server/componentIGMP.c
index 9ad7d30..223aa3c 100644
--- a/server/componentIGMP.c
+++ b/server/componentIGMP.c
@@ -144,7 +144,9 @@ void cComponentIGMP::Destruct(void)
{
if (m_MaxChannelNumber > 0)
{
- Cancel(3);
+ Cancel(-1);
+ m_CondWait.Signal();
+ Cancel(2);
for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel))
{
if (channel->GroupSep())