X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind.c;h=a83d9443de2580edc85235d3c4706f1f5f2b08c7;hb=25387573767909c96090ad22cccafc72c16542d7;hp=23fb55a9d4b232c224d82ce68efd0f6637e5eb5c;hpb=dd6979f65c61a570503929e4d5b592fd7410e0ec;p=elogind.git diff --git a/src/login/logind.c b/src/login/logind.c index 23fb55a9d..a83d9443d 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -30,9 +30,10 @@ #include "conf-parser.h" #include "bus-util.h" #include "bus-error.h" -#include "logind.h" #include "udev-util.h" #include "formats-util.h" +#include "signal-util.h" +#include "logind.h" static void manager_free(Manager *m); @@ -786,13 +787,8 @@ static int manager_connect_console(Manager *m) { return -EINVAL; } - r = ignore_signals(SIGRTMIN + 1, -1); - if (r < 0) - return log_error_errno(r, "Cannot ignore SIGRTMIN + 1: %m"); - - r = sigprocmask_many(SIG_BLOCK, SIGRTMIN, -1); - if (r < 0) - return log_error_errno(r, "Cannot block SIGRTMIN: %m"); + assert_se(ignore_signals(SIGRTMIN + 1, -1) >= 0); + assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGRTMIN, -1) >= 0); r = sd_event_add_signal(m->event, NULL, SIGRTMIN, manager_vt_switch, m); if (r < 0) @@ -1113,6 +1109,12 @@ static int manager_run(Manager *m) { manager_gc(m, true); + r = manager_dispatch_delayed(m, false); + if (r < 0) + return r; + if (r > 0) + continue; + r = sd_event_run(m->event, (uint64_t) -1); if (r < 0) return r;