chiark / gitweb /
socket: be a bit more verbose when refusing to start a socket unit
[elogind.git] / src / unit.c
index 90773e894f55891c6133c44f0f1328c7f7550068..37a7c07ae8f0eb75b5ca2b57c9052fb450f84d0e 100644 (file)
@@ -567,11 +567,8 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) {
         /* If syslog or kernel logging is requested, make sure our own
          * logging daemon is run first. */
 
-        if ((r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_LOGGER_SOCKET, NULL, true)) < 0)
-                return r;
-
         if (u->meta.manager->running_as == MANAGER_SYSTEM)
-                if ((r = unit_add_dependency_by_name(u, UNIT_REQUIRES, SPECIAL_LOGGER_SOCKET, NULL, true)) < 0)
+                if ((r = unit_add_two_dependencies_by_name(u, UNIT_REQUIRES, UNIT_AFTER, SPECIAL_LOGGER_SOCKET, NULL, true)) < 0)
                         return r;
 
         return 0;
@@ -817,6 +814,16 @@ int unit_load(Unit *u) {
                 if ((r = unit_add_default_dependencies(u)) < 0)
                         goto fail;
 
+        if (u->meta.on_failure_isolate &&
+            set_size(u->meta.dependencies[UNIT_ON_FAILURE]) > 1) {
+
+                log_error("More than one OnFailure= dependencies specified for %s but OnFailureIsolate= enabled. Refusing.",
+                          u->meta.id);
+
+                r = -EINVAL;
+                goto fail;
+        }
+
         assert((u->meta.load_state != UNIT_MERGED) == !u->meta.merged_into);
 
         unit_add_to_dbus_queue(unit_follow_merge(u));
@@ -2145,7 +2152,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
                 return 0;
 
         for (;;) {
-                char line[1024], *l, *v;
+                char line[LINE_MAX], *l, *v;
                 size_t k;
 
                 if (!fgets(line, sizeof(line), f)) {