diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2023-10-03 17:18:41 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-10-03 19:16:10 +0200 |
commit | 5fa39d48d53c7a3360d4f4da2c00232eb674678e (patch) | |
tree | 59c07e467a97acfa16cd647ef5c8cf00baaa183d /sysklogd/syslogd.c | |
parent | 92ab29fcf04bc3ff3d3ad897f1c2463d8b8d1410 (diff) | |
download | busybox-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.c | 9 |
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 | 959 | static int create_socket(void) |
960 | * permanently */ | ||
961 | static 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) | |||
1008 | static int NOINLINE syslogd_init(char **argv) | 1006 | static 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); |