diff options
author | Thomas Haller <thaller@redhat.com> | 2015-09-02 15:56:20 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-09-18 14:31:31 +0200 |
commit | 4ccae958025b8e555a7d3f9a1b18b8dae0deee65 (patch) | |
tree | 4839f0b28b8fafdcfdd62e8071897158a6112488 | |
parent | ea57ecc8eee0ea759457f1856868ea56024986d2 (diff) | |
download | NetworkManager-4ccae958025b8e555a7d3f9a1b18b8dae0deee65.tar.gz |
agent-manager/refact: replace get_start() by request_start()
Let all implementations call request_start(), instead of
getting-secrets doing something special and call get_start().
-rw-r--r-- | src/settings/nm-agent-manager.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 7b9656bd82..7a81abb332 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -136,6 +136,8 @@ static void get_next_cb (Request *req); static void save_next_cb (Request *req); static void delete_next_cb (Request *req); +static gboolean _con_get_try_complete_early (Request *req); + /*************************************************************/ static gboolean @@ -772,7 +774,18 @@ request_start (gpointer user_data) Request *req = user_data; req->idle_id = 0; + + switch (req->request_type) { + case REQUEST_TYPE_CON_GET: + if (_con_get_try_complete_early (req)) + goto out; + break; + default: + break; + } request_next_agent (req); + +out: return FALSE; } @@ -1064,18 +1077,14 @@ get_next_cb (Request *req) } static gboolean -get_start (gpointer user_data) +_con_get_try_complete_early (Request *req) { NMAgentManager *self; - Request *req = user_data; GVariant *setting_secrets = NULL; - - g_return_val_if_fail (req->request_type == REQUEST_TYPE_CON_GET, G_SOURCE_REMOVE); + gboolean completed = TRUE; self = req->self; - req->idle_id = 0; - /* Check if there are any existing secrets */ if (req->con.get.existing_secrets) setting_secrets = g_variant_lookup_value (req->con.get.existing_secrets, req->con.get.setting_name, NM_VARIANT_TYPE_SETTING); @@ -1116,7 +1125,7 @@ get_start (gpointer user_data) * don't error out if any secrets are missing. */ req_complete (req, req->con.get.existing_secrets, NULL, NULL, NULL); } else - request_next_agent (req); + completed = FALSE; } } g_object_unref (tmp); @@ -1125,13 +1134,13 @@ get_start (gpointer user_data) * agents for secrets. Let the Agent Manager handle which agents * we'll ask and in which order. */ - request_next_agent (req); + completed = FALSE; } if (setting_secrets) g_variant_unref (setting_secrets); - return FALSE; + return completed; } guint32 @@ -1186,7 +1195,7 @@ nm_agent_manager_get_secrets (NMAgentManager *self, /* Kick off the request */ if (!(req->con.get.flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_ONLY_SYSTEM)) request_add_agents (self, req); - req->idle_id = g_idle_add (get_start, req); + req->idle_id = g_idle_add (request_start, req); return req->reqid; } |