From: Rich Felker Date: Fri, 9 Jan 2015 05:09:54 +0000 (-0500) Subject: check for connect failure in syslog log opening X-Git-Tag: v1.1.6~5 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c574321d75f035ff6d2c18dfb7e3f70db60ba7bd;p=oweals%2Fmusl.git 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. --- diff --git a/src/misc/syslog.c b/src/misc/syslog.c index fdf90ba9..fbce4bcd 100644 --- a/src/misc/syslog.c +++ b/src/misc/syslog.c @@ -46,8 +46,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)