summaryrefslogtreecommitdiff
path: root/libnm-glib/nm-secret-agent.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-glib/nm-secret-agent.c')
-rw-r--r--libnm-glib/nm-secret-agent.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libnm-glib/nm-secret-agent.c b/libnm-glib/nm-secret-agent.c
index 400d042766..b573592d6b 100644
--- a/libnm-glib/nm-secret-agent.c
+++ b/libnm-glib/nm-secret-agent.c
@@ -589,6 +589,9 @@ nm_secret_agent_register (NMSecretAgent *self)
g_return_val_if_fail (class->save_secrets != NULL, FALSE);
g_return_val_if_fail (class->delete_secrets != NULL, FALSE);
+ if (!priv->nm_owner && !priv->private_bus)
+ return FALSE;
+
priv->suppress_auto = FALSE;
/* Export our secret agent interface before registering with the manager */
@@ -631,6 +634,9 @@ nm_secret_agent_unregister (NMSecretAgent *self)
g_return_val_if_fail (priv->bus != NULL, FALSE);
g_return_val_if_fail (priv->manager_proxy != NULL, FALSE);
+ if (!priv->nm_owner && !priv->private_bus)
+ return FALSE;
+
dbus_g_proxy_call_no_reply (priv->manager_proxy, "Unregister", G_TYPE_INVALID);
_internal_unregister (self);
@@ -829,6 +835,8 @@ nm_secret_agent_init (NMSecretAgent *self)
"NameOwnerChanged",
G_CALLBACK (name_owner_changed),
self, NULL);
+
+ get_nm_owner (self);
}
priv->manager_proxy = _nm_dbus_new_proxy_for_connection (priv->bus,
@@ -839,7 +847,8 @@ nm_secret_agent_init (NMSecretAgent *self)
return;
}
- priv->auto_register_id = g_idle_add (auto_register_cb, self);
+ if (priv->nm_owner || priv->private_bus)
+ priv->auto_register_id = g_idle_add (auto_register_cb, self);
}
static void