From 36fba1a184dc6a142de2acd401224c9f323f8acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 2 Feb 2021 16:30:11 +0100 Subject: [PATCH] gdm: Do not fail the whole authentication if a background service failed In case a background service such as the fingerprint authentication fails to start we'd just mark the whole authentication process as failed. Currently this may happen by just putting a wrong password when an user has some fingerprints enrolled, the fingerprint gdm authentication worker may take some time to restart leading to a failure and this is currently also making the password authentication to fail: JS ERROR: Failed to start gdm-fingerprint for u: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.Spawn.Failed: Could not create authentication helper process _promisify/proto[asyncFunc]/ --- js/gdm/util.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/gdm/util.js b/js/gdm/util.js index 587a2c941..046560919 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -501,6 +501,11 @@ var ShellUserVerifier = class { } catch (e) { if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) return; + if (!this.serviceIsForeground(serviceName)) { + logError(e, 'Failed to start %s for %s'.format(serviceName, this._userName)); + this._hold.release(); + return; + } this._reportInitError(this._userName ? 'Failed to start verification for user' : 'Failed to start verification', e);