[gnome-shell/gnome-3-38] gdm: Don't try answering query if the user verifier has been deleted
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-38] gdm: Don't try answering query if the user verifier has been deleted
- Date: Thu, 8 Apr 2021 18:08:56 +0000 (UTC)
commit a49615c1e314f500a3eb83a7084bdd55e81d55c0
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Feb 1 16:42:21 2021 +0100
gdm: Don't try answering query if the user verifier has been deleted
Answering a query may be delayed to the moment in which we've not any
more messages in the queue, however this case can also happen just after
we've cleared the UserVerifier and in such case we'd have nothing to
answer, but we currently throw an error:
JS ERROR: Exception in callback for signal: no-more-messages:
TypeError: this._userVerifier is null
answerQuery/signalId<@resource:///org/gnome/shell/gdm/util.js:249:17
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
finishMessageQueue@resource:///org/gnome/shell/gdm/util.js:266:14
_clearMessageQueue@resource:///org/gnome/shell/gdm/util.js:301:14
clear@resource:///org/gnome/shell/gdm/util.js:223:14
cancel@resource:///org/gnome/shell/gdm/util.js:205:18
reset@resource:///org/gnome/shell/gdm/authPrompt.js:482:32
cancel@resource:///org/gnome/shell/gdm/authPrompt.js:569:14
vfunc_key_press_event@resource:///org/gnome/shell/gdm/authPrompt.js:128
So handle this case more gracefully keeping track of the current
cancellable and checking whether it is still valid before trying to answer
a query or do a delayed action.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1783>
js/gdm/util.js | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/js/gdm/util.js b/js/gdm/util.js
index 1e9d149604..f86b4b5e24 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -240,9 +240,11 @@ var ShellUserVerifier = class {
if (!this.hasPendingMessages) {
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
} else {
+ const cancellable = this._cancellable;
let signalId = this.connect('no-more-messages', () => {
this.disconnect(signalId);
- this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
+ if (!cancellable.is_cancelled())
+ this._userVerifier.call_answer_query(serviceName, answer, cancellable, null);
});
}
}
@@ -548,9 +550,10 @@ var ShellUserVerifier = class {
if (!this.hasPendingMessages) {
this._retry();
} else {
+ const cancellable = this._cancellable;
let signalId = this.connect('no-more-messages', () => {
this.disconnect(signalId);
- if (this._cancellable && !this._cancellable.is_cancelled())
+ if (!cancellable.is_cancelled())
this._retry();
});
}
@@ -559,9 +562,11 @@ var ShellUserVerifier = class {
if (!this.hasPendingMessages) {
this._cancelAndReset();
} else {
+ const cancellable = this._cancellable;
let signalId = this.connect('no-more-messages', () => {
this.disconnect(signalId);
- this._cancelAndReset();
+ if (!cancellable.is_cancelled())
+ this._cancelAndReset();
});
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]