logind: Return proper error value when tty or seat doesn't match

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
This commit is contained in:
Kristian Høgsberg 2013-10-30 13:53:01 -07:00
parent 90dfb11428
commit 529a81a898

View file

@ -837,9 +837,14 @@ weston_logind_connect(struct weston_logind **out,
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;
}
@ -852,6 +857,7 @@ weston_logind_connect(struct weston_logind **out,
} 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;
}