summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-01-09 00:09:54 -0500
committerRich Felker <dalias@aerifal.cx>2015-03-30 01:41:33 -0400
commit5087ba67af3bef48ef8872e1b2ffda04623fc65b (patch)
tree01a3ecd6ddcbcc536564b65dcc0507184966c0f6
parent2c61720d971b403dfd1e500d6efdfeaf54eb411a (diff)
downloadmusl-5087ba67af3bef48ef8872e1b2ffda04623fc65b.tar.gz
check for connect failure in syslog log opening
based on patch by Dima Krasner, with minor improvements for code size. connect can fail if there is no listening syslogd, in which case a useless socket was kept open, preventing subsequent syslog call from attempting to connect again. (cherry picked from commit c574321d75f035ff6d2c18dfb7e3f70db60ba7bd)
-rw-r--r--src/misc/syslog.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/misc/syslog.c b/src/misc/syslog.c
index 57f1d75c..cc82508d 100644
--- a/src/misc/syslog.c
+++ b/src/misc/syslog.c
@@ -45,8 +45,12 @@ void closelog(void)
static void __openlog()
{
- log_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
- if (log_fd >= 0) connect(log_fd, (void *)&log_addr, sizeof log_addr);
+ int fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
+ if (fd < 0) return;
+ if (connect(fd, (void *)&log_addr, sizeof log_addr) < 0)
+ close(fd);
+ else
+ log_fd = fd;
}
void openlog(const char *ident, int opt, int facility)