]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
ota epg grabber: handle better the error conditions (do not retry before one minute)
authorJaroslav Kysela <perex@perex.cz>
Wed, 10 Jan 2018 16:20:12 +0000 (17:20 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 10 Jan 2018 16:20:12 +0000 (17:20 +0100)
src/epggrab.h
src/epggrab/otamux.c

index 638f82e1ce79d819203697578226a2f46c138253..30250fc39c39e94ac0b500f8da311fca330d419c 100644 (file)
@@ -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
 
index 8346bc3a2fae5a732b1a4cfa67b978c9bf47656d..72191fcf195d9dbf0ed8ec2e553b4ec814735934 100644 (file)
@@ -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? */