On Tue, Jan 04, 2022 at 04:05:57PM +0100, Claudio Jeker wrote:
> Currently running rpki-client -n with an up to date repo results in  the
> loss of around 25% of ROAs. The reason is that most of apnic fails since
> they decided it is a glorious idea to put two rsync repos into one rrdp
> repo.
> 
> When changing the repo state for the noop case from REPO_DONE to
> REPO_FAILED it resulted in a unwanted side-effect. The problem is that a
> second rrdp_get() call for such a failed repo fails and so the code falls
> back to rsync but there is nothing in the rsync dir.
> 
> Just change back the status to REPO_DONE and -n works like before.

ok tb

> -- 
> :wq Claudio
> 
> Index: repo.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/rpki-client/repo.c,v
> retrieving revision 1.18
> diff -u -p -r1.18 repo.c
> --- repo.c    29 Dec 2021 11:35:23 -0000      1.18
> +++ repo.c    4 Jan 2022 14:28:41 -0000
> @@ -447,7 +447,7 @@ ta_get(struct tal *tal)
>       tal->uri = NULL;
>  
>       if (noop) {
> -             tr->state = REPO_FAILED;
> +             tr->state = REPO_DONE;
>               logx("ta/%s: using cache", tr->descr);
>               repo_done(tr, 0);
>       } else {
> @@ -512,7 +512,7 @@ rsync_get(const char *uri, int nofetch)
>       rr->basedir = repo_dir(repo, "rsync", 0);
>  
>       if (noop || nofetch) {
> -             rr->state = REPO_FAILED;
> +             rr->state = REPO_DONE;
>               logx("%s: using cache", rr->basedir);
>               repo_done(rr, 0);
>       } else {
> @@ -582,7 +582,7 @@ rrdp_get(const char *uri, int nofetch)
>       RB_INIT(&rr->deleted);
>  
>       if (noop || nofetch) {
> -             rr->state = REPO_FAILED;
> +             rr->state = REPO_DONE;
>               logx("%s: using cache", rr->notifyuri);
>               repo_done(rr, 0);
>       } else {
> 

Reply via email to