From 1b41478028839d4a35b325a22b9403379ebc8924 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Wed, 25 Sep 2013 17:33:52 +0100 Subject: [PATCH] subscription: fix handling of service subscriptions on failed services --- src/subscriptions.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/subscriptions.c b/src/subscriptions.c index 8b5bf90a..a1508ca4 100644 --- a/src/subscriptions.c +++ b/src/subscriptions.c @@ -114,6 +114,9 @@ subscription_unlink_service0(th_subscription_t *s, int reason, int stop) streaming_message_t *sm; service_t *t = s->ths_service; + /* Ignore - not actually linked */ + if (!s->ths_current_instance) return; + tvhtrace("subscription", "unlinking sub %p from svc %p", s, t); pthread_mutex_lock(&t->s_stream_mutex); @@ -227,7 +230,9 @@ subscription_reschedule(void) assert(si != NULL); si->si_error = s->ths_testing_error; time(&si->si_error_time); - + + if (!s->ths_channel) + s->ths_service = si->si_s; } if (s->ths_channel) @@ -361,7 +366,6 @@ void subscription_unsubscribe(th_subscription_t *s) { service_t *t = s->ths_service; - service_instance_t *si = s->ths_current_instance; lock_assert(&global_lock); @@ -380,7 +384,7 @@ subscription_unsubscribe(th_subscription_t *s) s->ths_title); } - if(si) + if(t) service_remove_subscriber(t, s, SM_CODE_OK); #if ENABLE_MPEGTS