diff options
author | Ray Strode <halfline@gmail.com> | 2021-07-09 16:59:54 +0000 |
---|---|---|
committer | Ray Strode <halfline@gmail.com> | 2021-07-09 16:59:54 +0000 |
commit | 8581b4464f42757acc2b4d324d3defe860c63d06 (patch) | |
tree | d5ba96028c578d48c3e1154cd53ddec953283833 | |
parent | d745581f5d52e0f592ad32d18ecd1d11e8170518 (diff) | |
parent | 2f9afacd494311b8b7393848fec59bc8df7520b7 (diff) | |
download | gdm-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.c | 36 |
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, |