chiark / gitweb /
logind: check whether newly created session is active
[elogind.git] / src / logind-session.c
index 9fcbf460a3a2f40fdccbb7016dfa8cc0c3010a43..8e35e09069c4b503035375238d2eee4ae2dca04d 100644 (file)
@@ -111,6 +111,9 @@ int session_save(Session *s) {
 
         assert(s);
 
+        if (!s->started)
+                return 0;
+
         r = safe_mkdir("/run/systemd/sessions", 0755, 0, 0);
         if (r < 0)
                 goto finish;
@@ -405,9 +408,11 @@ static int session_create_one_group(Session *s, const char *controller, const ch
         assert(controller);
         assert(path);
 
-        if (s->leader > 0)
+        if (s->leader > 0) {
                 r = cg_create_and_attach(controller, path, s->leader);
-        else
+                if (r < 0)
+                        r = cg_create(controller, path);
+        } else
                 r = cg_create(controller, path);
 
         if (r < 0)
@@ -506,13 +511,16 @@ int session_start(Session *s) {
         /* Create X11 symlink */
         session_link_x11_socket(s);
 
-        /* Save session data */
-        session_save(s);
-
         dual_timestamp_get(&s->timestamp);
 
+        if (s->seat)
+                seat_read_active_vt(s->seat);
+
         s->started = true;
 
+        /* Save session data */
+        session_save(s);
+
         session_send_signal(s, true);
 
         if (s->seat) {