X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=aa4baaacc8bdb01611b93ce93b10dc28bc40d149;hb=255baef68a8d9d74cb3b846f93c290225ad162aa;hp=c424fece52f385170264f3eae032c58fc1d3de17;hpb=752b590500cdfe8e60800c0553bf7ae3ac613ffd;p=elogind.git diff --git a/src/core/manager.c b/src/core/manager.c index c424fece5..aa4baaacc 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -368,6 +368,11 @@ static int manager_setup_signals(Manager *m) { if (r < 0) return r; + /* Process signals a bit earlier than the rest of things */ + r = sd_event_source_set_priority(m->signal_event_source, -5); + if (r < 0) + return r; + if (m->running_as == SYSTEMD_SYSTEM) return enable_special_signals(m); @@ -485,6 +490,12 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) { if (r < 0) goto fail; + m->udev = udev_new(); + if (!m->udev) { + r = -ENOMEM; + goto fail; + } + if (running_as == SYSTEMD_SYSTEM) try_bus_connect = reexecuting; else if (getenv("DBUS_SESSION_BUS_ADDRESS")) @@ -686,6 +697,7 @@ void manager_free(Manager *m) { manager_close_idle_pipe(m); + udev_unref(m->udev); sd_event_unref(m->event); free(m->notify_socket);