network: unregister the agent when it's disabled

When the agent doesn't work (e.g. when the screen is locked), it shouldn't be
registered with NM. Otherwise it will keep cancelling the requests that
could happily be serviced with system secrets.

https://bugzilla.gnome.org/show_bug.cgi?id=789811
This commit is contained in:
Lubomir Rintel 2017-12-06 16:55:20 +01:00
parent baacd216dd
commit 16a1c35e28

View File

@ -586,7 +586,8 @@ var NetworkAgent = new Lang.Class({
_init: function() {
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
capabilities: NM.SecretAgentCapabilities.VPN_HINTS
capabilities: NM.SecretAgentCapabilities.VPN_HINTS,
auto_register: false
});
this._dialogs = { };
@ -609,12 +610,15 @@ var NetworkAgent = new Lang.Class({
this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
this._enabled = false;
},
enable: function() {
this._enabled = true;
if (!this._native)
return;
this._native.auto_register = true;
if (!this._native.registered)
this._native.register_async(null, null);
},
disable: function() {
@ -632,7 +636,12 @@ var NetworkAgent = new Lang.Class({
this._notifications[requestId].destroy();
this._notifications = { };
this._enabled = false;
if (!this._native)
return;
this._native.auto_register = false;
if (this._native.registered)
this._native.unregister_async(null, null);
},
_showNotification: function(requestId, connection, settingName, hints, flags) {
@ -696,11 +705,6 @@ var NetworkAgent = new Lang.Class({
},
_newRequest: function(agent, requestId, connection, settingName, hints, flags) {
if (!this._enabled) {
agent.respond(requestId, Shell.NetworkAgentResponse.USER_CANCELED);
return;
}
if (!(flags & NM.SecretAgentGetSecretsFlags.USER_REQUESTED))
this._showNotification(requestId, connection, settingName, hints, flags);
else