Replace MAX_REPO_TIMEOUT with repo_timeout, which is set to 1/4th of
authorjob <job@openbsd.org>
Thu, 25 Nov 2021 14:03:40 +0000 (14:03 +0000)
committerjob <job@openbsd.org>
Thu, 25 Nov 2021 14:03:40 +0000 (14:03 +0000)
timeout, or if timeout is disabled set to 24 hours.

OK claudio@

usr.sbin/rpki-client/extern.h
usr.sbin/rpki-client/main.c
usr.sbin/rpki-client/repo.c
usr.sbin/rpki-client/rpki-client.8

index a41e2cc..bfee4fd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: extern.h,v 1.97 2021/11/24 15:24:16 claudio Exp $ */
+/*     $OpenBSD: extern.h,v 1.98 2021/11/25 14:03:40 job Exp $ */
 /*
  * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -627,7 +627,4 @@ int mkpath(const char *);
 /* Maximum allowd repositories per tal */
 #define MAX_REPO_PER_TAL       1000
 
-/* Timeout for repository synchronisation, in seconds */
-#define MAX_REPO_TIMEOUT       (15 * 60)
-
 #endif /* ! EXTERN_H */
index 36d43dc..3fba29e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: main.c,v 1.165 2021/11/19 09:47:30 job Exp $ */
+/*     $OpenBSD: main.c,v 1.166 2021/11/25 14:03:40 job Exp $ */
 /*
  * Copyright (c) 2021 Claudio Jeker <claudio@openbsd.org>
  * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -68,6 +68,7 @@ const char    *bird_tablename = "ROAS";
 int    verbose;
 int    noop;
 int    rrdpon = 1;
+int    repo_timeout = 15*60;
 
 struct stats    stats;
 
@@ -753,6 +754,12 @@ main(int argc, char *argv[])
                        timeout = strtonum(optarg, 0, 24*60*60, &errs);
                        if (errs)
                                errx(1, "-s: %s", errs);
+                       if (timeout == 0)
+                               repo_timeout = 24*60*60;
+                       else if (timeout < 1)
+                               errx(1, "-s: %i too small", timeout);
+                       else
+                               repo_timeout = timeout / 4;
                        break;
                case 't':
                        if (talsz >= TALSZ_MAX)
index 5c6aa5f..506c84e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: repo.c,v 1.13 2021/11/25 12:55:34 claudio Exp $ */
+/*     $OpenBSD: repo.c,v 1.14 2021/11/25 14:03:40 job Exp $ */
 /*
  * Copyright (c) 2021 Claudio Jeker <claudio@openbsd.org>
  * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -40,6 +40,7 @@
 extern struct stats    stats;
 extern int             noop;
 extern int             rrdpon;
+extern int             repo_timeout;
 
 enum repo_state {
        REPO_LOADING = 0,
@@ -620,7 +621,7 @@ repo_alloc(int talid)
 
        rp->id = ++repoid;
        rp->talid = talid;
-       rp->alarm = getmonotime() + MAX_REPO_TIMEOUT;
+       rp->alarm = getmonotime() + repo_timeout;
        TAILQ_INIT(&rp->queue);
        SLIST_INSERT_HEAD(&repos, rp, entry);
 
@@ -1227,7 +1228,7 @@ static void
 repo_fail(struct repo *rp)
 {
        /* reset the alarm since code may fallback to rsync */
-       rp->alarm = getmonotime() + MAX_REPO_TIMEOUT;
+       rp->alarm = getmonotime() + repo_timeout;
 
        if (rp->ta)
                http_finish(rp->ta->id, HTTP_FAILED, NULL);
index 46d4156..1d67673 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $OpenBSD: rpki-client.8,v 1.49 2021/10/26 13:26:53 claudio Exp $
+.\"    $OpenBSD: rpki-client.8,v 1.50 2021/11/25 14:03:40 job Exp $
 .\"
 .\" Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
 .\"
@@ -14,7 +14,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: October 26 2021 $
+.Dd $Mdocdate: November 25 2021 $
 .Dt RPKI-CLIENT 8
 .Os
 .Sh NAME
@@ -131,6 +131,8 @@ seconds of runtime, because normal practice will restart from
 .Xr cron 8 .
 Disable by specifying 0.
 Defaults to 1 hour.
+Individual Publication Points are timed out after one fourth of
+.Em timeout .
 .It Fl T Ar table
 For BIRD output generated with the
 .Fl B