X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsocket.c;h=acd49a50457cdb49ba06b278922a56243026a40a;hb=71a6f7538199f571b92e0c9fbb5819f8ce0e0d20;hp=00e0685aadec8476dc7b33aeb17b0d27a41afd55;hpb=b58b41160fde88a82cba1ddec4be7dfb08825e35;p=elogind.git diff --git a/src/socket.c b/src/socket.c index 00e0685aa..acd49a504 100644 --- a/src/socket.c +++ b/src/socket.c @@ -38,6 +38,7 @@ #include "dbus-socket.h" #include "missing.h" #include "special.h" +#include "bus-errors.h" static const UnitActiveState state_translation_table[_SOCKET_STATE_MAX] = { [SOCKET_DEAD] = UNIT_INACTIVE, @@ -821,6 +822,7 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) { s->meta.manager->environment, true, true, + true, s->meta.manager->confirm_spawn, s->meta.cgroup_bondings, &pid); @@ -1025,17 +1027,19 @@ fail: static void socket_enter_running(Socket *s, int cfd) { int r; + DBusError error; assert(s); + dbus_error_init(&error); if (cfd < 0) { - if ((r = manager_add_job(s->meta.manager, JOB_START, UNIT(s->service), JOB_REPLACE, true, NULL)) < 0) + if ((r = manager_add_job(s->meta.manager, JOB_START, UNIT(s->service), JOB_REPLACE, true, &error, NULL)) < 0) goto fail; socket_set_state(s, SOCKET_RUNNING); } else { Unit *u; - char *prefix, *instance, *name; + char *prefix, *instance = NULL, *name; if (s->n_connections >= s->max_connections) { log_warning("Too many incoming connections (%u)", s->n_connections); @@ -1061,7 +1065,7 @@ static void socket_enter_running(Socket *s, int cfd) { goto fail; } - r = manager_load_unit(s->meta.manager, name, NULL, &u); + r = manager_load_unit(s->meta.manager, name, NULL, NULL, &u); free(name); if (r < 0) @@ -1074,18 +1078,20 @@ static void socket_enter_running(Socket *s, int cfd) { s->n_connections ++; - if ((r = manager_add_job(u->meta.manager, JOB_START, u, JOB_REPLACE, true, NULL)) < 0) + if ((r = manager_add_job(u->meta.manager, JOB_START, u, JOB_REPLACE, true, &error, NULL)) < 0) goto fail; } return; fail: - log_warning("%s failed to queue socket startup job: %s", s->meta.id, strerror(-r)); + log_warning("%s failed to queue socket startup job: %s", s->meta.id, bus_error(&error, r)); socket_enter_stop_pre(s, false); if (cfd >= 0) close_nointr_nofail(cfd); + + dbus_error_free(&error); } static void socket_run_next(Socket *s, bool success) {