[BZ #108]
authorUlrich Drepper <drepper@redhat.com>
Mon, 9 Aug 2004 02:50:47 +0000 (02:50 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 9 Aug 2004 02:50:47 +0000 (02:50 +0000)
Update.
* misc/syslog.c (openlog_internal): Always try both UDP and TCP.
[BZ #108]  Patch mainly by Bjorn Andersson <bjorn@iki.fi>.

ChangeLog
misc/syslog.c

index 125b690..e113a6d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-08-08  Ulrich Drepper  <drepper@redhat.com>
 
+       * misc/syslog.c (openlog_internal): Always try both UDP and TCP.
+       [BZ #108]  Patch mainly by Bjorn Andersson <bjorn@iki.fi>.
+
        * configure.in: Also recognize i786. [BZ #106]
        Patch by <pluto@pld-linux.org>.
 
index c0fcdf3..0ba3517 100644 (file)
@@ -323,7 +323,8 @@ openlog_internal(const char *ident, int logstat, int logfac)
        if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0)
                LogFacility = logfac;
 
-       while (1) {
+       int retry = 0;
+       while (retry < 2) {
                if (LogFile == -1) {
                        SyslogAddr.sa_family = AF_UNIX;
                        (void)strncpy(SyslogAddr.sa_data, _PATH_LOG,
@@ -345,12 +346,13 @@ openlog_internal(const char *ident, int logstat, int logfac)
                                int fd = LogFile;
                                LogFile = -1;
                                (void)__close(fd);
-                               if (LogType == SOCK_DGRAM
-                                   && saved_errno == EPROTOTYPE)
+                               __set_errno (old_errno);
+                               if (saved_errno == EPROTOTYPE)
                                {
-                                       /* retry with next SOCK_STREAM: */
-                                       LogType = SOCK_STREAM;
-                                       __set_errno (old_errno);
+                                       /* retry with the other type: */
+                                       LogType = (LogType == SOCK_DGRAM
+                                                  ? SOCK_STREAM : SOCK_DGRAM);
+                                       ++retry;
                                        continue;
                                }
                        } else