diff --git a/docs/html/config_services.html b/docs/html/config_services.html
index d48355cc..6814f757 100644
--- a/docs/html/config_services.html
+++ b/docs/html/config_services.html
@@ -18,6 +18,12 @@
Enabled
Whether or not this service is available for use
+ Automatic Checking
+ Check for the service presence. If service is no longer broadcasted,
+ this field will become as "Missing In PAT/SDT". The
+ check can be also disabled for given service using this
+ column.
+
Channel
The channel to which the service is mapped
diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c
index b3b8d48a..f3a936ea 100644
--- a/src/input/mpegts/dvb_psi.c
+++ b/src/input/mpegts/dvb_psi.c
@@ -1052,6 +1052,10 @@ dvb_pat_callback
tvhdebug("pat", " sid %04X (%d) on pid %04X (%d)", sid, sid, pid, pid);
int save = 0;
if ((s = mpegts_service_find(mm, sid, pid, 1, &save))) {
+ if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) {
+ tvhinfo("mpegts", "enabling service %s (found in PAT)", s->s_nicename);
+ s->s_enabled = 1;
+ }
s->s_dvb_check_seen = dispatch_clock;
mpegts_table_add(mm, DVB_PMT_BASE, DVB_PMT_MASK, dvb_pmt_callback,
NULL, "pmt", MT_CRC | MT_QUICKREQ | MT_SCANSUBS,
@@ -1588,8 +1592,13 @@ dvb_sdt_callback
s = mpegts_service_find(mm, service_id, 0, 1, &save);
charset = dvb_charset_find(mn, mm, s);
- if (s)
+ if (s) {
+ if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) {
+ tvhinfo("mpegts", "enabling service %s (found in SDT)", s->s_nicename);
+ s->s_enabled = 1;
+ }
s->s_dvb_check_seen = dispatch_clock;
+ }
/* Descriptor loop */
DVB_DESC_EACH(lptr, llen, dtag, dlen, dptr) {
diff --git a/src/service.c b/src/service.c
index 5972d983..06107772 100644
--- a/src/service.c
+++ b/src/service.c
@@ -181,9 +181,9 @@ static htsmsg_t *
service_class_auto_list ( void *o )
{
static const struct strtab tab[] = {
- { "", 0 },
- { "No Auto (Disabled)", 1 },
- { "Missing In PAT/SDT", 2 }
+ { "Auto Check Enabled", 0 },
+ { "Auto Check Disabled", 1 },
+ { "Missing In PAT/SDT", 2 }
};
return strtab2htsmsg(tab);
}