When updating utmp on reboot and poweroff, the managers dbus
connection was copied and then closed and invalidated.
As the utmp update in elogind does not need a dbus connection at all,
the copying and the closing was removed.
This fixes elogind to become unresponsive when calling for poweroff,
halt or reboot.
Closes: #50
#if 0 /// elogind needs this to be a callable function
int main(int argc, char *argv[]) {
#else
-void update_utmp(int argc, char* argv[], sd_bus *bus) {
+void update_utmp(int argc, char* argv[]) {
#endif // 0
Context c = {
#if HAVE_AUDIT
#else
assert(2 == argc);
assert(argv[1]);
- assert(bus);
#endif // 0
#if HAVE_AUDIT
finish:
#else
- c.bus = bus;
if (streq(argv[1], "reboot"))
(void)on_reboot(&c);
else if (streq(argv[1], "shutdown"))
audit_close(c.audit_fd);
#endif
- sd_bus_flush_close_unref(c.bus);
#if 0 /// UNNEEDED by elogind
+ sd_bus_flush_close_unref(c.bus);
+
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
#endif // 0
}
* Make the old main() from update-utmp.c visible as update_utmp() *
******************************************************************/
-void update_utmp(int argc, char* argv[], sd_bus *bus);
+void update_utmp(int argc, char* argv[]);
#endif // ELOGIND_SRC_UPDATE_UTMP_UPDATE_UTMP_H_INCLUDED