chiark / gitweb /
Prep v234: Re-add user/session to the gc_queue when stopping.
[elogind.git] / src / login / logind-session.c
index a2709f3..10e9327 100644 (file)
@@ -33,6 +33,7 @@
 #include "bus-error.h"
 #include "bus-util.h"
 #include "escape.h"
+#include "extract-word.h"
 #include "fd-util.h"
 #include "fileio.h"
 #include "format-util.h"
@@ -767,6 +768,10 @@ int session_stop(Session *s, bool force) {
         session_save(s);
         user_save(s->user);
 
+#if 1 /// elogind must queue this session again
+        session_add_to_gc_queue(s);
+#endif // 1
+
         return r;
 }
 
@@ -818,7 +823,6 @@ int session_finalize(Session *s) {
         return 0;
 }
 
-#if 0 /// UNNEEDED by elogind
 static int release_timeout_callback(sd_event_source *es, uint64_t usec, void *userdata) {
         Session *s = userdata;
 
@@ -828,7 +832,6 @@ static int release_timeout_callback(sd_event_source *es, uint64_t usec, void *us
         session_stop(s, false);
         return 0;
 }
-#endif // 0
 
 int session_release(Session *s) {
         assert(s);
@@ -839,18 +842,11 @@ int session_release(Session *s) {
         if (s->timer_event_source)
                 return 0;
 
-#if 0 /// UNNEEDED by elogind
         return sd_event_add_time(s->manager->event,
                                  &s->timer_event_source,
                                  CLOCK_MONOTONIC,
                                  now(CLOCK_MONOTONIC) + RELEASE_USEC, 0,
                                  release_timeout_callback, s);
-#else
-        /* In systemd, session release is triggered by user jobs
-           dying.  In elogind we don't have that so go ahead and stop
-           now.  */
-        return session_stop(s, false);
-#endif // 0
 }
 
 bool session_is_active(Session *s) {