aboutsummaryrefslogtreecommitdiff
path: root/sysklogd/syslogd.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2023-10-03 17:18:41 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2023-10-03 19:16:10 +0200
commit5fa39d48d53c7a3360d4f4da2c00232eb674678e (patch)
tree59c07e467a97acfa16cd647ef5c8cf00baaa183d /sysklogd/syslogd.c
parent92ab29fcf04bc3ff3d3ad897f1c2463d8b8d1410 (diff)
downloadbusybox-w32-5fa39d48d53c7a3360d4f4da2c00232eb674678e.tar.gz
busybox-w32-5fa39d48d53c7a3360d4f4da2c00232eb674678e.tar.bz2
busybox-w32-5fa39d48d53c7a3360d4f4da2c00232eb674678e.zip
syslogd: fix breakage caused by "daemonize _after_ init" change
function old new delta syslogd_init 1007 1140 +133 create_socket 143 - -143 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 1/0 up/down: 133/-143) Total: -10 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to '')
-rw-r--r--sysklogd/syslogd.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 83b5c0cf6..7558051f0 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -956,9 +956,7 @@ static void do_mark(int sig)
956} 956}
957#endif 957#endif
958 958
959/* Don't inline: prevent struct sockaddr_un to take up space on stack 959static int create_socket(void)
960 * permanently */
961static NOINLINE int create_socket(void)
962{ 960{
963 struct sockaddr_un sunx; 961 struct sockaddr_un sunx;
964 int sock_fd; 962 int sock_fd;
@@ -1008,6 +1006,7 @@ static int try_to_resolve_remote(remoteHost_t *rh)
1008static int NOINLINE syslogd_init(char **argv) 1006static int NOINLINE syslogd_init(char **argv)
1009{ 1007{
1010 int opts; 1008 int opts;
1009 int fd;
1011 char OPTION_DECL; 1010 char OPTION_DECL;
1012#if ENABLE_FEATURE_REMOTE_LOG 1011#if ENABLE_FEATURE_REMOTE_LOG
1013 llist_t *remoteAddrList = NULL; 1012 llist_t *remoteAddrList = NULL;
@@ -1055,7 +1054,7 @@ static int NOINLINE syslogd_init(char **argv)
1055 G.hostname = safe_gethostname(); 1054 G.hostname = safe_gethostname();
1056 *strchrnul(G.hostname, '.') = '\0'; 1055 *strchrnul(G.hostname, '.') = '\0';
1057 1056
1058 xmove_fd(create_socket(), STDIN_FILENO); 1057 fd = create_socket();
1059 1058
1060 if (opts & OPT_circularlog) 1059 if (opts & OPT_circularlog)
1061 ipcsyslog_init(); 1060 ipcsyslog_init();
@@ -1067,6 +1066,8 @@ static int NOINLINE syslogd_init(char **argv)
1067 bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv); 1066 bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
1068 } 1067 }
1069 1068
1069 xmove_fd(fd, STDIN_FILENO);
1070
1070 /* Set up signal handlers (so that they interrupt read()) */ 1071 /* Set up signal handlers (so that they interrupt read()) */
1071 signal_no_SA_RESTART_empty_mask(SIGTERM, record_signo); 1072 signal_no_SA_RESTART_empty_mask(SIGTERM, record_signo);
1072 signal_no_SA_RESTART_empty_mask(SIGINT, record_signo); 1073 signal_no_SA_RESTART_empty_mask(SIGINT, record_signo);