X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-inhibit.c;h=e77088364aa5cb352cea667610879782030543d4;hb=d3b6d0c21ea5a0d15ec6dbd8b8d179138b7463bc;hp=9994084f93dc3d41427a6de22e0153a629213256;hpb=a5c32cff1f56afe6f0c6c70d91a88a7a8238b2d7;p=elogind.git diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index 9994084f9..e77088364 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -292,7 +292,7 @@ int inhibitor_create_fifo(Inhibitor *i) { /* Open reading side */ if (i->fifo_fd < 0) { - struct epoll_event ev; + struct epoll_event ev = {}; i->fifo_fd = open(i->fifo_path, O_RDONLY|O_CLOEXEC|O_NDELAY); if (i->fifo_fd < 0) @@ -302,7 +302,6 @@ int inhibitor_create_fifo(Inhibitor *i) { if (r < 0) return r; - zero(ev); ev.events = 0; ev.data.u32 = FD_OTHER_BASE + i->fifo_fd; @@ -354,9 +353,14 @@ static int pid_is_active(Manager *m, pid_t pid) { int r; r = manager_get_session_by_pid(m, pid, &s); - if (r <= 0) + if (r < 0) return r; + /* If there's no session assigned to it, then it's globally + * active on all ttys */ + if (r == 0) + return 1; + return session_is_active(s); }