From: Jaroslav Kysela Date: Wed, 10 Jan 2018 16:20:12 +0000 (+0100) Subject: ota epg grabber: handle better the error conditions (do not retry before one minute) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d8388d8dfa48320476102fdb6a3ed3ba501f2da;p=thirdparty%2Ftvheadend.git ota epg grabber: handle better the error conditions (do not retry before one minute) --- diff --git a/src/epggrab.h b/src/epggrab.h index 638f82e1c..30250fc39 100644 --- a/src/epggrab.h +++ b/src/epggrab.h @@ -241,6 +241,7 @@ struct epggrab_ota_mux uint8_t om_save; ///< something changed mtimer_t om_timer; ///< Per mux active timer mtimer_t om_data_timer; ///< Any EPG data seen? + int64_t om_retry_time; ///< Next time to retry char *om_force_modname;///< Force this module diff --git a/src/epggrab/otamux.c b/src/epggrab/otamux.c index 8346bc3a2..72191fcf1 100644 --- a/src/epggrab/otamux.c +++ b/src/epggrab/otamux.c @@ -465,7 +465,6 @@ epggrab_ota_kick_cb ( void *p ) extern const idclass_t mpegts_mux_class; epggrab_ota_map_t *map; epggrab_ota_mux_t *om = TAILQ_FIRST(&epggrab_ota_pending); - epggrab_ota_mux_t *first = NULL; mpegts_mux_t *mm; char name[256]; struct { @@ -580,10 +579,9 @@ next_one: } TAILQ_INSERT_TAIL(&epggrab_ota_pending, om, om_q_link); om->om_q_type = EPGGRAB_OTA_MUX_PENDING; + om->om_retry_time = mclk() + mono2sec(60); if (r == SM_CODE_NO_FREE_ADAPTER) net->failed = 1; - if (first == NULL) - first = om; } else { if (tvhtrace_enabled()) { mpegts_mux_nice_name(mm, name, sizeof(name)); @@ -604,7 +602,7 @@ next_one: done: om = TAILQ_FIRST(&epggrab_ota_pending); - if (networks_count < ARRAY_SIZE(networks) && om && first != om) + if (networks_count < ARRAY_SIZE(networks) && om && om->om_retry_time < mclk()) goto next_one; if (kick) epggrab_ota_kick(64); /* a random number? */