Hi,

When syslogd is sending messages per UDP, it stops if there is a
permanent error.  It has a list of transient errors.

Since OpenBSD 6.5 pf has changed its error code to EACCES.  If pf
blocks your outgoing syslog packets and your fix pf.conf, syslogd
still does not send messages to remote syslog server.

Better continue trying also in that case.  It restores pre-6.5
behavior.

ok?

bluhm

Index: usr.sbin/syslogd/syslogd.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v
retrieving revision 1.276
diff -u -p -r1.276 syslogd.c
--- usr.sbin/syslogd/syslogd.c  28 Dec 2022 21:30:19 -0000      1.276
+++ usr.sbin/syslogd/syslogd.c  16 Mar 2023 16:07:50 -0000
@@ -1950,6 +1950,7 @@ fprintlog(struct filed *f, int flags, ch
                msghdr.msg_iovlen = IOVCNT;
                if (sendmsg(f->f_file, &msghdr, 0) == -1) {
                        switch (errno) {
+                       case EACCES:
                        case EADDRNOTAVAIL:
                        case EHOSTDOWN:
                        case EHOSTUNREACH:

Reply via email to