Just call the rrdp_data_handler() whenever a poll event happened.
The read() call will do the right thing then even on a POLLHUP event.
It seems that on Linux systems POLLHUP is returned when a socket is closed
while OpenBSD returns POLLIN. In both cases read() returns 0 which is what
we want.

-- 
:wq Claudio

Index: rrdp.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/rrdp.c,v
retrieving revision 1.4
diff -u -p -r1.4 rrdp.c
--- rrdp.c      12 Apr 2021 17:23:30 -0000      1.4
+++ rrdp.c      15 Apr 2021 08:41:38 -0000
@@ -579,7 +579,7 @@ proc_rrdp(int fd)
                TAILQ_FOREACH_SAFE(s, &states, entry, ns) {
                        if (s->pfd == NULL)
                                continue;
-                       if (s->pfd->revents & POLLIN)
+                       if (s->pfd->revents != 0)
                                rrdp_data_handler(s);
                }
        }

Reply via email to