From: Jaroslav Kysela Date: Tue, 15 Jan 2019 09:36:43 +0000 (+0100) Subject: mpegts network: stop all running muxes when the network was disabled by the user... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=098318644802bfee4baa7eeeeafac4f81ecd9578;p=thirdparty%2Ftvheadend.git mpegts network: stop all running muxes when the network was disabled by the user, fixes #5497 --- diff --git a/src/input/mpegts/mpegts_network.c b/src/input/mpegts/mpegts_network.c index b4e6330eb..ab1c4ba3b 100644 --- a/src/input/mpegts/mpegts_network.c +++ b/src/input/mpegts/mpegts_network.c @@ -31,6 +31,22 @@ static bouquet_t * mpegts_network_bouquet_get (mpegts_network_t *, int); * Class definition * ***************************************************************************/ +static void +mpegts_network_class_notify_enabled ( void *obj, const char *lang ) +{ + mpegts_network_t *mn = (mpegts_network_t*)obj; + mpegts_mux_instance_t *mmi; + mpegts_mux_t *mm; + if (!mn->mn_enabled) { + LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) { + mmi = mm->mm_active; + if (!mmi) continue; + assert(mm == mmi->mmi_mux); + mm->mm_stop(mm, 1, SM_CODE_ABORTED); + } + } +} + static htsmsg_t * mpegts_network_class_save ( idnode_t *in, char *filename, size_t fsize ) @@ -175,6 +191,7 @@ const idclass_t mpegts_network_class = .name = N_("Enabled"), .desc = N_("Enable/Disable network."), .off = offsetof(mpegts_network_t, mn_enabled), + .notify = mpegts_network_class_notify_enabled, }, { .type = PT_STR,