Replace MAX_REPO_TIMEOUT with repo_timeout, which is set to 1/4th of
timeout, or if timeout is disabled set it to 24 hours.
OK?
Index: extern.h
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/extern.h,v
retrieving revision 1.97
diff -u -p -r1.97 extern.h
--- extern.h 24 Nov 2021 15:24:16 -0000 1.97
+++ extern.h 25 Nov 2021 12:52:05 -0000
@@ -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: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
retrieving revision 1.165
diff -u -p -r1.165 main.c
--- main.c 19 Nov 2021 09:47:30 -0000 1.165
+++ main.c 25 Nov 2021 12:52:05 -0000
@@ -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 < 300)
+ errx(1, "-s: %i too small", timeout);
+ else
+ repo_timeout = timeout / 4;
break;
case 't':
if (talsz >= TALSZ_MAX)
Index: repo.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/repo.c,v
retrieving revision 1.12
diff -u -p -r1.12 repo.c
--- repo.c 15 Nov 2021 16:32:15 -0000 1.12
+++ repo.c 25 Nov 2021 12:52:05 -0000
@@ -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);
@@ -1225,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: rpki-client.8
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/rpki-client.8,v
retrieving revision 1.49
diff -u -p -r1.49 rpki-client.8
--- rpki-client.8 26 Oct 2021 13:26:53 -0000 1.49
+++ rpki-client.8 25 Nov 2021 12:52:05 -0000
@@ -131,6 +131,8 @@ seconds of runtime, because normal pract
.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