core: log if the service to activate vanished before we activate it
authorLennart Poettering <lennart@poettering.net>
Wed, 14 Oct 2015 14:22:22 +0000 (16:22 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 14 Oct 2015 14:22:22 +0000 (16:22 +0200)
Normally this shouldn't happen unless the daemon is reloaded.

A similar check is already in place in socket.c for the socket
activation case.

This hopefully makes #1526 non-fatal, though it will not fix this, and
there's something else to fix.

src/core/busname.c

index 38becfc..b85fce5 100644 (file)
@@ -585,6 +585,12 @@ static void busname_enter_running(BusName *n) {
                 }
 
         if (!pending) {
+                if (!UNIT_ISSET(n->service)) {
+                        log_unit_error(UNIT(n), "Service to activate vanished, refusing activation.");
+                        r = -ENOENT;
+                        goto fail;
+                }
+
                 r = manager_add_job(UNIT(n)->manager, JOB_START, UNIT_DEREF(n->service), JOB_REPLACE, true, &error, NULL);
                 if (r < 0)
                         goto fail;