summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-07-16 19:41:11 +0200
committerLennart Poettering <lennart@poettering.net>2010-07-16 19:41:11 +0200
commitcac6f7c87207b5079c1ae5c551869667bad4cfb8 (patch)
tree58897210ff03abbf1205c96c9e925cd20ac289c9
parent276c3e78ceae3727c797820ba80c762acc727f4e (diff)
downloadsystemd-cac6f7c87207b5079c1ae5c551869667bad4cfb8.tar.gz
service: refuse to start services that are configured for per-connection instantiation to start without a socket
-rw-r--r--fixme4
-rw-r--r--src/service.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/fixme b/fixme
index a3c99500c7..b4f82a3c9d 100644
--- a/fixme
+++ b/fixme
@@ -65,6 +65,10 @@
* debian deadlock when partition auf noauto is.
+* maintenance units müssen vergessen werden
+
+* maintenance muss dokumentiert werden
+
External:
* patch /etc/init.d/functions with:
diff --git a/src/service.c b/src/service.c
index 646749ed9c..1bfab5013d 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1896,6 +1896,14 @@ static int service_start(Unit *u) {
return -ECANCELED;
}
+ if ((s->exec_context.std_input == EXEC_INPUT_SOCKET ||
+ s->exec_context.std_output == EXEC_OUTPUT_SOCKET ||
+ s->exec_context.std_error == EXEC_OUTPUT_SOCKET) &&
+ s->socket_fd < 0) {
+ log_warning("%s can only be started with a per-connection socket.", u->meta.id);
+ return -EINVAL;
+ }
+
s->failure = false;
s->main_pid_known = false;
s->allow_restart = true;