From: Jaroslav Kysela Date: Wed, 21 Mar 2018 12:07:05 +0000 (+0100) Subject: subscription: improve 'Switch to another service' behaviour, fixes #4922 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20e3cb8c81d9cb3d068f15bb569041a402060f32;p=thirdparty%2Ftvheadend.git subscription: improve 'Switch to another service' behaviour, fixes #4922 If the channel has only one service, switch to standard behaviour where all service instances (inputs) are tried before the subcription fails. --- diff --git a/src/service.c b/src/service.c index 48e478e52..f5b2f63ee 100644 --- a/src/service.c +++ b/src/service.c @@ -767,9 +767,19 @@ service_find_instance lock_assert(&global_lock); /* Build list */ + r = 0; + if (flags & SUBSCRIPTION_SWSERVICE) { + TAILQ_FOREACH(si, sil, si_link) { + next = TAILQ_NEXT(si, si_link); + if (next && next->si_s != si->si_s) { + r++; + break; + } + } + } TAILQ_FOREACH(si, sil, si_link) { si->si_mark = 1; - if (flags & SUBSCRIPTION_SWSERVICE) { + if (r && (flags & SUBSCRIPTION_SWSERVICE) != 0) { TAILQ_FOREACH(next, sil, si_link) if (next != si && si->si_s == next->si_s && si->si_error) next->si_error = MAX(next->si_error, si->si_error);