public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] misc: syslog: Assume MSG_NOSIGNAL support (BZ #17144)
@ 2021-04-15 14:59 Adhemerval Zanella
0 siblings, 0 replies; only message in thread
From: Adhemerval Zanella @ 2021-04-15 14:59 UTC (permalink / raw)
To: glibc-cvs
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=ded3cef36135afa3510ce3c12b982f659b8ea244
commit ded3cef36135afa3510ce3c12b982f659b8ea244
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Fri Apr 9 15:53:04 2021 -0300
misc: syslog: Assume MSG_NOSIGNAL support (BZ #17144)
MSG_NOSIGNAL was added on POSIX 2008 and Hurd seems to support it.
The SIGPIPE handling also makes the implementation not thread-safe
(due the sigaction usage).
Checked on x86_64-linux-gnu.
Diff:
---
misc/syslog.c | 49 ++++------------------------------------
sysdeps/unix/sysv/linux/syslog.c | 4 ----
2 files changed, 4 insertions(+), 49 deletions(-)
diff --git a/misc/syslog.c b/misc/syslog.c
index 33a81da49b..18330a373b 100644
--- a/misc/syslog.c
+++ b/misc/syslog.c
@@ -74,13 +74,6 @@ __libc_lock_define_initialized (static, syslog_lock)
static void openlog_internal(const char *, int, int);
static void closelog_internal(void);
-#ifndef NO_SIGPIPE
-static void sigpipe_handler (int);
-#endif
-
-#ifndef send_flags
-# define send_flags 0
-#endif
struct cleanup_arg
{
@@ -95,15 +88,8 @@ cancel_handler (void *ptr)
struct cleanup_arg *clarg = (struct cleanup_arg *) ptr;
if (clarg != NULL)
- {
-#ifndef NO_SIGPIPE
- if (clarg->oldaction != NULL)
- __sigaction (SIGPIPE, clarg->oldaction, NULL);
-#endif
-
- /* Free the memstream buffer, */
- free (clarg->buf);
- }
+ /* Free the memstream buffer, */
+ free (clarg->buf);
/* Free the lock. */
__libc_lock_unlock (syslog_lock);
@@ -160,10 +146,6 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
char *buf = 0;
size_t bufsize = 0;
size_t msgoff;
-#ifndef NO_SIGPIPE
- struct sigaction action, oldaction;
- int sigpipe;
-#endif
int saved_errno = errno;
char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"];
@@ -273,16 +255,6 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
(void)__writev(STDERR_FILENO, iov, v - iov + 1);
}
-#ifndef NO_SIGPIPE
- /* Prepare for a broken connection. */
- memset (&action, 0, sizeof (action));
- action.sa_handler = sigpipe_handler;
- sigemptyset (&action.sa_mask);
- sigpipe = __sigaction (SIGPIPE, &action, &oldaction);
- if (sigpipe == 0)
- clarg.oldaction = &oldaction;
-#endif
-
/* Get connected, output the message to the local logger. */
if (!connected)
openlog_internal(NULL, LogStat | LOG_NDELAY, LogFacility);
@@ -292,7 +264,7 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
if (LogType == SOCK_STREAM)
++bufsize;
- if (!connected || __send(LogFile, buf, bufsize, send_flags) < 0)
+ if (!connected || __send(LogFile, buf, bufsize, MSG_NOSIGNAL) < 0)
{
if (connected)
{
@@ -302,7 +274,7 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
openlog_internal(NULL, LogStat | LOG_NDELAY, LogFacility);
}
- if (!connected || __send(LogFile, buf, bufsize, send_flags) < 0)
+ if (!connected || __send(LogFile, buf, bufsize, MSG_NOSIGNAL) < 0)
{
closelog_internal (); /* attempt re-open next time */
/*
@@ -320,11 +292,6 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
}
}
-#ifndef NO_SIGPIPE
- if (sigpipe == 0)
- __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
-#endif
-
out:
/* End of critical section. */
__libc_cleanup_pop (0);
@@ -396,14 +363,6 @@ openlog (const char *ident, int logstat, int logfac)
__libc_cleanup_pop (1);
}
-#ifndef NO_SIGPIPE
-static void
-sigpipe_handler (int signo)
-{
- closelog_internal ();
-}
-#endif
-
static void
closelog_internal (void)
{
diff --git a/sysdeps/unix/sysv/linux/syslog.c b/sysdeps/unix/sysv/linux/syslog.c
deleted file mode 100644
index cf8ce23385..0000000000
--- a/sysdeps/unix/sysv/linux/syslog.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#define NO_SIGPIPE
-#define send_flags MSG_NOSIGNAL
-
-#include <misc/syslog.c>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-04-15 14:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15 14:59 [glibc] misc: syslog: Assume MSG_NOSIGNAL support (BZ #17144) Adhemerval Zanella
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).