chiark / gitweb /
execute: bump up log level of executed processes that failed
[elogind.git] / src / service.c
index 646749ed9c85ff78ee82b40195a0e71b9b12cf5a..a5d1ebd84b6d780a41cecb0936b9e2da80d544ef 100644 (file)
@@ -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;
@@ -2191,7 +2199,8 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
                                 success = true;
                 }
 
-                log_debug("%s: main process exited, code=%s, status=%i", u->meta.id, sigchld_code_to_string(code), status);
+                log_full(success ? LOG_DEBUG : LOG_NOTICE,
+                         "%s: main process exited, code=%s, status=%i", u->meta.id, sigchld_code_to_string(code), status);
                 s->failure = s->failure || !success;
 
                 /* The service exited, so the service is officially
@@ -2248,7 +2257,8 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
 
                 s->control_pid = 0;
 
-                log_debug("%s: control process exited, code=%s status=%i", u->meta.id, sigchld_code_to_string(code), status);
+                log_full(success ? LOG_DEBUG : LOG_NOTICE,
+                         "%s: control process exited, code=%s status=%i", u->meta.id, sigchld_code_to_string(code), status);
                 s->failure = s->failure || !success;
 
                 /* If we are shutting things down anyway we
@@ -2468,7 +2478,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
              s->state == SERVICE_RELOAD)) {
 
                 if (parse_pid(e + 8, &pid) < 0)
-                        log_warning("Failed to parse %s", e);
+                        log_warning("Failed to parse notification message %s", e);
                 else {
                         log_debug("%s: got %s", u->meta.id, e);
                         service_set_main_pid(s, pid);