summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <halfline@gmail.com>2021-07-09 16:59:54 +0000
committerRay Strode <halfline@gmail.com>2021-07-09 16:59:54 +0000
commit8581b4464f42757acc2b4d324d3defe860c63d06 (patch)
treed5ba96028c578d48c3e1154cd53ddec953283833
parentd745581f5d52e0f592ad32d18ecd1d11e8170518 (diff)
parent2f9afacd494311b8b7393848fec59bc8df7520b7 (diff)
downloadgdm-8581b4464f42757acc2b4d324d3defe860c63d06.tar.gz
Merge branch 'do-not-verificate-too-early' into 'master'
session: Only emit verification-complete on reauth or after session is opened See merge request GNOME/gdm!143
-rw-r--r--daemon/gdm-session.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 5c5903a4..f705f0e0 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -172,6 +172,7 @@ enum {
AUTHENTICATION_FAILED,
VERIFICATION_COMPLETE,
SESSION_OPENED,
+ SESSION_OPENED_FAILED,
SESSION_STARTED,
SESSION_START_FAILED,
SESSION_EXITED,
@@ -322,18 +323,18 @@ on_establish_credentials_cb (GdmDBusWorker *proxy,
service_name = g_strdup (conversation->service_name);
if (worked) {
- if (self->user_verifier_interface != NULL) {
- gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface,
- service_name);
- g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name);
- }
-
switch (self->verification_mode) {
case GDM_SESSION_VERIFICATION_MODE_LOGIN:
case GDM_SESSION_VERIFICATION_MODE_CHOOSER:
gdm_session_open_session (self, service_name);
break;
case GDM_SESSION_VERIFICATION_MODE_REAUTHENTICATE:
+ if (self->user_verifier_interface != NULL) {
+ gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface,
+ service_name);
+ g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name);
+ }
+ break;
default:
break;
}
@@ -866,24 +867,24 @@ on_opened (GdmDBusWorker *worker,
conversation->session_id = g_strdup (session_id);
- if (self->greeter_interface != NULL) {
- gdm_dbus_greeter_emit_session_opened (self->greeter_interface,
- service_name);
- }
-
if (self->user_verifier_interface != NULL) {
gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface,
service_name);
g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name);
}
+ if (self->greeter_interface != NULL) {
+ gdm_dbus_greeter_emit_session_opened (self->greeter_interface,
+ service_name);
+ }
+
g_debug ("GdmSession: Emitting 'session-opened' signal");
g_signal_emit (self, signals[SESSION_OPENED], 0, service_name, session_id);
} else {
report_and_stop_conversation (self, service_name, error);
g_debug ("GdmSession: Emitting 'session-start-failed' signal");
- g_signal_emit (self, signals[SESSION_START_FAILED], 0, service_name, error->message);
+ g_signal_emit (self, signals[SESSION_OPENED_FAILED], 0, service_name, error->message);
}
}
@@ -3746,6 +3747,17 @@ gdm_session_class_init (GdmSessionClass *session_class)
2,
G_TYPE_STRING,
G_TYPE_STRING);
+ signals [SESSION_OPENED_FAILED] =
+ g_signal_new ("session-opened-failed",
+ GDM_TYPE_SESSION,
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_STRING, G_TYPE_STRING);
signals [SESSION_STARTED] =
g_signal_new ("session-started",
GDM_TYPE_SESSION,