{
g_return_if_fail (session != NULL);
+ /* If can cleanly stop then do that */
+ if (session_get_is_authenticated (session) && !session->priv->command_run)
+ {
+ gsize n = 0;
+
+ session->priv->command_run = TRUE;
+ write_string (session, NULL); // log filename
+ write_string (session, NULL); // tty
+ write_string (session, NULL); // xauth filename
+ write_string (session, NULL); // xdisplay
+ write_xauth (session, NULL); // xauth
+ write_data (session, &n, sizeof (n)); // environment
+ write_data (session, &n, sizeof (n)); // command
+ return;
+ }
+
if (session->priv->stopping)
return;
session->priv->stopping = TRUE;
test-switch-to-greeter \
test-switch-to-greeter-new-session \
test-switch-to-greeter-return-session \
+ test-switch-to-greeter-return-session-pam \
test-switch-to-greeter-return-session-logout \
test-switch-to-guest \
test-switch-to-user \
scripts/switch-to-greeter-new-session.conf \
scripts/switch-to-greeter-return-session.conf \
scripts/switch-to-greeter-return-session-logout.conf \
+ scripts/switch-to-greeter-return-session-pam.conf \
scripts/switch-to-guest.conf \
scripts/switch-to-user.conf \
scripts/switch-to-users.conf \
#?XSERVER-0 INDICATE-READY
#?XSERVER-0 ACCEPT-CONNECT
-# Creat PAM session for greeter
+# Create PAM session for greeter
#?PAM-lightdm START SERVICE=lightdm-greeter USER=lightdm
#?PAM-lightdm SETCRED ESTABLISH_CRED
#?PAM-lightdm OPEN-SESSION
#?PAM-have-password1 AUTHENTICATE
#?GREETER-X-0 SHOW-PROMPT TEXT="Password:"
#?*GREETER-X-0 RESPOND TEXT="password"
+#?PAM-have-password1 ACCT-MGMT
#?GREETER-X-0 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
# User session starts
#?*GREETER-X-0 START-SESSION
-#?PAM-have-password1 ACCT-MGMT
#?PAM-have-password1 SETCRED ESTABLISH_CRED
#?PAM-have-password1 OPEN-SESSION
--- /dev/null
+#
+# Check we correctly use PAM for returning to an existing session
+#
+
+[SeatDefaults]
+autologin-user=have-password1
+user-session=default
+
+[test-pam]
+log-events=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session authenticates
+#?PAM-have-password1 START SERVICE=lightdm-autologin USER=have-password1
+#?PAM-have-password1 AUTHENTICATE
+#?PAM-have-password1 ACCT-MGMT
+#?PAM-have-password1 SETCRED ESTABLISH_CRED
+#?PAM-have-password1 OPEN-SESSION
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 DESKTOP_SESSION=default USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Show the greeter
+#?*SWITCH-TO-GREETER
+#?RUNNER SWITCH-TO-GREETER
+
+# New X server starts
+#?XSERVER-1 START VT=8 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-1 INDICATE-READY
+#?XSERVER-1 INDICATE-READY
+#?XSERVER-1 ACCEPT-CONNECT
+
+# Session is locked
+#?LOGIN1 LOCK-SESSION
+
+# Create PAM session for greeter
+#?PAM-lightdm START SERVICE=lightdm-greeter USER=lightdm
+#?PAM-lightdm SETCRED ESTABLISH_CRED
+#?PAM-lightdm OPEN-SESSION
+
+# Greeter starts
+#?GREETER-X-1 START XDG_SEAT=seat0 XDG_VTNR=8 XDG_SESSION_CLASS=greeter
+#?XSERVER-1 ACCEPT-CONNECT
+#?GREETER-X-1 CONNECT-XSERVER
+#?GREETER-X-1 CONNECT-TO-DAEMON
+#?GREETER-X-1 CONNECTED-TO-DAEMON
+
+# Switch to greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?VT ACTIVATE VT=8
+
+# Login as existing user
+#?*GREETER-X-1 AUTHENTICATE USERNAME=have-password1
+#?PAM-have-password1 START SERVICE=lightdm USER=have-password1
+#?PAM-have-password1 AUTHENTICATE
+#?GREETER-X-1 SHOW-PROMPT TEXT="Password:"
+#?*GREETER-X-1 RESPOND TEXT="password"
+#?PAM-have-password1 ACCT-MGMT
+#?GREETER-X-1 AUTHENTICATION-COMPLETE USERNAME=have-password1 AUTHENTICATED=TRUE
+#?*GREETER-X-1 START-SESSION
+
+# Credentials are refreshed
+#?PAM-have-password1 SETCRED REFRESH_CRED
+
+# Session is unlocked
+#?LOGIN1 UNLOCK-SESSION
+
+# Switch to session
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?VT ACTIVATE VT=7
+
+# Greeter and X server stop
+#?GREETER-X-1 TERMINATE SIGNAL=15
+#?PAM-lightdm CLOSE-SESSION
+#?PAM-lightdm SETCRED DELETE_CRED
+#?PAM-lightdm END
+#?XSERVER-1 TERMINATE SIGNAL=15
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?PAM-have-password1 CLOSE-SESSION
+#?PAM-have-password1 SETCRED DELETE_CRED
+#?PAM-have-password1 END
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0