On Wed, May 04, 2022 at 04:03:21PM +0200, Claudio Jeker wrote:
> On Wed, May 04, 2022 at 03:51:02PM +0200, Theo Buehler wrote:
> > I had output from rpki-client -f something piped into less. After an
> > hour rpki-client couldn't take it any longer and decided to move on to
> > a better place. It also left a residue via syslog on its way out. I
> > don't think it should do that in file mode or offline mode:
> > 
> > Index: main.c
> > ===================================================================
> > RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
> > retrieving revision 1.201
> > diff -u -p -r1.201 main.c
> > --- main.c  4 May 2022 13:07:35 -0000       1.201
> > +++ main.c  4 May 2022 13:46:13 -0000
> > @@ -689,7 +689,7 @@ process_start(const char *title, int *fd
> >             /* change working directory to the cache directory */
> >             if (fchdir(cachefd) == -1)
> >                     err(1, "fchdir");
> > -           if (timeout)
> > +           if (!noop && timeout > 0)
> >                     alarm(timeout);
> >             close(pair[1]);
> >             *fd = pair[0];
> > @@ -923,7 +923,7 @@ main(int argc, char *argv[])
> >             rrdppid = -1;
> >     }
> >  
> > -   if (timeout) {
> > +   if (!noop && timeout > 0) {
> >             /*
> >              * Commit suicide eventually
> >              * cron will normally start a new one
> > 
> 
> I agree that the alarm should not be armed for -f mode but I would keep it
> for -n mode. At least I think the timeout protects also from excessive
> work in case the cache was provided through other means.

Alright - I was going back and forth between two diffs. Let's go with
the more cautious one, then:

Index: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
retrieving revision 1.201
diff -u -p -r1.201 main.c
--- main.c      4 May 2022 13:07:35 -0000       1.201
+++ main.c      4 May 2022 14:04:51 -0000
@@ -689,7 +689,7 @@ process_start(const char *title, int *fd
                /* change working directory to the cache directory */
                if (fchdir(cachefd) == -1)
                        err(1, "fchdir");
-               if (timeout)
+               if (!filemode && timeout > 0)
                        alarm(timeout);
                close(pair[1]);
                *fd = pair[0];
@@ -923,7 +923,7 @@ main(int argc, char *argv[])
                rrdppid = -1;
        }
 
-       if (timeout) {
+       if (!filemode && timeout > 0) {
                /*
                 * Commit suicide eventually
                 * cron will normally start a new one

Reply via email to