If the seat or tty doesn't match we return with r == 0, which looks like
success to weston_launcher_connect(), which then fails to fall back
to the legacy path.
https://bugs.freedesktop.org/show_bug.cgi?id=70876
t = NULL;
r = sd_session_get_seat(wl->sid, &t);
- if (r < 0 || strcmp(seat_id, t)) {
+ if (r < 0) {
+ weston_log("logind: failed to get session seat\n");
+ free(t);
+ goto err_session;
+ } else if (strcmp(seat_id, t)) {
weston_log("logind: weston's seat '%s' differs from session-seat '%s'\n",
seat_id, t);
+ r = -EINVAL;
free(t);
goto err_session;
}
} else if (tty > 0 && wl->vtnr != (unsigned int )tty) {
weston_log("logind: requested VT --tty=%d differs from real session VT %u\n",
tty, wl->vtnr);
+ r = -EINVAL;
goto err_session;
}