Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4
syslogd
sysklogd-1.4.1-reopen.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File sysklogd-1.4.1-reopen.patch of Package syslogd
# # Description: reconnects to log socket if a write fails with # ECONNREFUSED or ENOTCONN -- similar to reopen # in syslog routines provided by glibc. # Happens if the log socket (provided by syslog # daemon) has been reopened. Can be triggered by # "rcsyslog reload" while syslog-ng is used. # See also Bugzilla Bug #27971. # # Author: mt@suse.de # --- syslog.c +++ syslog.c 2003-08-26 11:34:34.000000000 +0000 @@ -97,7 +97,7 @@ vsyslog(pri, fmt, ap) register int cnt; register char *p; time_t now; - int fd, saved_errno; + int fd, saved_errno, rc; char tbuf[2048], fmt_cpy[1024], *stdp = (char *) 0; saved_errno = errno; @@ -167,7 +167,16 @@ vsyslog(pri, fmt, ap) } /* output the message to the local logger */ - if (write(LogFile, tbuf, cnt + 1) >= 0 || !(LogStat&LOG_CONS)) + rc = write(LogFile, tbuf, cnt + 1); + if(rc == -1 && connected && (ECONNREFUSED == errno || + ENOTCONN == errno)) { + /* try to reopen and write again */ + closelog(); + openlog(LogTag, LogStat | LOG_NDELAY, LogFacility); + if(connected) + rc = write(LogFile, tbuf, cnt + 1); + } + if(rc >= 0 || !(LogStat&LOG_CONS)) return; /*
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor