14.06.2023 23:52, Michael Tokarev wrote:
Actually it doesn't work on regular system too, the fd#0 is redirected
from /dev/null somewhere down the line and enters a tight loop
Attached is the fix. Not touching daemonize_or_reexec().
Signed-off-by: Michael Tokarev <[email protected]>
--- busybox.orig/sysklogd/syslogd.c
+++ busybox/sysklogd/syslogd.c
@@ -1009,6 +1009,7 @@ static int try_to_resolve_remote(remoteH
static int NOINLINE syslogd_init(char **argv)
{
int opts;
+ int fd;
char OPTION_DECL;
#if ENABLE_FEATURE_REMOTE_LOG
llist_t *remoteAddrList = NULL;
@@ -1056,7 +1057,7 @@ static int NOINLINE syslogd_init(char **
G.hostname = safe_gethostname();
*strchrnul(G.hostname, '.') = '\0';
- xmove_fd(create_socket(), STDIN_FILENO);
+ fd = create_socket();
if (opts & OPT_circularlog)
ipcsyslog_init();
@@ -1068,6 +1069,8 @@ static int NOINLINE syslogd_init(char **
bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
}
+ xmove_fd(fd, STDIN_FILENO);
+
/* Set up signal handlers (so that they interrupt read()) */
signal_no_SA_RESTART_empty_mask(SIGTERM, record_signo);
signal_no_SA_RESTART_empty_mask(SIGINT, record_signo);
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox