summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-08-30 23:31:27 +0200
committerLennart Poettering <lennart@poettering.net>2010-08-30 23:31:27 +0200
commitda726a4d4dc324b35c703fd2dc5f60b460ce8091 (patch)
tree278e8e7f49a2c4f360f2ddf5cb990bfdbd1119af
parent2528a7a62c4ad9b2f4773b608d208239299da50c (diff)
exec: make sure O_NONBLOCK is off for all sockets passed as STDIN/STDOUT/STDERR
-rw-r--r--fixme24
-rw-r--r--src/execute.c5
2 files changed, 19 insertions, 10 deletions
diff --git a/fixme b/fixme
index e5d17a060e..1ac8ba2834 100644
--- a/fixme
+++ b/fixme
@@ -1,8 +1,6 @@
* oneshot services which do not remain: 'exited' instead of 'dead'?
it should be visible in 'systemctl' that they have been run
-* systemd.log_level=debug should overwrite 'quiet' ?
-
* dot output for --test showing the 'initial transaction'
* have a simple syslog bridge providing /dev/log and forward messages
@@ -64,29 +62,35 @@
* ConditionFileExists=, ConditionKernelCommandLine=, ConditionEnvironment= mit !
-* oom_score_adj
-
* accountsservice is dod
-* follow LSB exit codes spec in "systemctl start"
-
* auditd service files
* add systemctl switch to dump transaction without executing it
-* shell wenn fsck im arsch is
-
* system.conf/session.conf brauch ne man page
* exec /sbin/poweroff als PID 1 und shutdown
+* kexec, suspend, resume
+
+v9:
+
* MTA IS KAPUTT
-* kill-mode=cgroup muss auch die mainpid killen!
+* kill-mode=cgroup muss auch die mainpid killen! https://bugzilla.redhat.com/show_bug.cgi?id=626477
* o_ndelay ausschalten für stdin/stderr/stdout auf socket
-* kexec, suspend, resume
+* follow LSB exit codes spec in "systemctl start"
+
+* oom_score_adj
+
+* fix isolate as runlevel https://bugzilla.redhat.com/show_bug.cgi?id=627014
+
+* rename failed/maintenance https://bugzilla.redhat.com/show_bug.cgi?id=614619
+
+* systemctl wrapping https://bugzilla.redhat.com/show_bug.cgi?id=626891 https://bugzilla.redhat.com/show_bug.cgi?id=626443
External:
diff --git a/src/execute.c b/src/execute.c
index f35e916e4c..2443d9c74d 100644
--- a/src/execute.c
+++ b/src/execute.c
@@ -1038,6 +1038,11 @@ int exec_spawn(ExecCommand *command,
goto fail;
}
+ /* If a socket is connected to STDIN/STDOUT/STDERR, we
+ * must sure to drop O_NONBLOCK */
+ if (socket_fd >= 0)
+ fd_nonblock(socket_fd, false);
+
if (!keep_stdin)
if (setup_input(context, socket_fd, apply_tty_stdin) < 0) {
r = EXIT_STDIN;