summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrist J. Clark <cjc@FreeBSD.org>2002-08-25 06:05:25 +0000
committerCrist J. Clark <cjc@FreeBSD.org>2002-08-25 06:05:25 +0000
commitfcfce9770ffddb5c0af9066e6a06a5a73c6fc265 (patch)
tree6a8991654ebbf3ce430d79063c12f548aecad1ce
parent0b3a80af0d3913933b26362ee30f47e87e18f13a (diff)
Notes
-rw-r--r--usr.sbin/syslogd/syslogd.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 2405748a5ace..b2693874dd3e 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -1048,12 +1048,29 @@ fprintlog(struct filed *f, int flags, const char *msg)
if (lsent == l && !send_to_all)
break;
}
+ dprintf("lsent/l: %d/%d\n", lsent, l);
if (lsent != l) {
int e = errno;
- (void)close(f->f_file);
- errno = e;
- f->f_type = F_UNUSED;
logerror("sendto");
+ errno = e;
+ switch (errno) {
+ case EHOSTUNREACH:
+ case EHOSTDOWN:
+ break;
+ /* case EBADF: */
+ /* case EACCES: */
+ /* case ENOTSOCK: */
+ /* case EFAULT: */
+ /* case EMSGSIZE: */
+ /* case EAGAIN: */
+ /* case ENOBUFS: */
+ /* case ECONNREFUSED: */
+ default:
+ dprintf("removing entry\n", e);
+ (void)close(f->f_file);
+ f->f_type = F_UNUSED;
+ break;
+ }
}
}
break;