--- misc/syslog.c.orig 2003-12-01 15:38:42.000000000 +0200 +++ misc/syslog.c 2003-12-01 15:54:40.000000000 +0200 @@ -287,13 +287,15 @@ internal_function openlog_internal(const char *ident, int logstat, int logfac) { + int retry = 0; + if (ident != NULL) LogTag = ident; LogStat = logstat; if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0) LogFacility = logfac; - while (1) { + while (retry < 2) { if (LogFile == -1) { SyslogAddr.sa_family = AF_UNIX; (void)strncpy(SyslogAddr.sa_data, _PATH_LOG, @@ -314,14 +316,15 @@ int saved_errno = errno; (void)__close(LogFile); LogFile = -1; - if (LogType == SOCK_DGRAM - && saved_errno == EPROTOTYPE) - { - /* retry with next SOCK_STREAM: */ - LogType = SOCK_STREAM; + if (saved_errno == EPROTOTYPE) { + LogType == SOCK_DGRAM ? + LogType = SOCK_STREAM : + LogType = SOCK_DGRAM; __set_errno (old_errno); + retry++; continue; } + __set_errno (old_errno); } else connected = 1; }