chiark / gitweb /
logind: require VTs on seat0 and forbid elsewhere
[elogind.git] / src / login / logind-session.c
index cd87088456782b07d2b72756ca83a882d03277f4..a72b13ee0363c3826836706c36c4f4dd64439c00 100644 (file)
@@ -334,21 +334,21 @@ int session_load(Session *s) {
                         s->remote = k;
         }
 
                         s->remote = k;
         }
 
+        if (vtnr)
+                safe_atou(vtnr, &s->vtnr);
+
         if (seat && !s->seat) {
                 Seat *o;
 
                 o = hashmap_get(s->manager->seats, seat);
                 if (o)
         if (seat && !s->seat) {
                 Seat *o;
 
                 o = hashmap_get(s->manager->seats, seat);
                 if (o)
-                        seat_attach_session(o, s);
+                        r = seat_attach_session(o, s);
+                if (!o || r < 0)
+                        log_error("Cannot attach session %s to seat %s", s->id, seat);
         }
 
         }
 
-        if (vtnr && s->seat && seat_has_vts(s->seat)) {
-                unsigned int v;
-
-                k = safe_atou(vtnr, &v);
-                if (k >= 0 && v >= 1)
-                        s->vtnr = v;
-        }
+        if (!s->seat || !seat_has_vts(s->seat))
+                s->vtnr = 0;
 
         if (leader) {
                 k = parse_pid(leader, &s->leader);
 
         if (leader) {
                 k = parse_pid(leader, &s->leader);