summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-09-02 15:56:20 +0200
committerThomas Haller <thaller@redhat.com>2015-09-18 14:31:31 +0200
commit4ccae958025b8e555a7d3f9a1b18b8dae0deee65 (patch)
tree4839f0b28b8fafdcfdd62e8071897158a6112488
parentea57ecc8eee0ea759457f1856868ea56024986d2 (diff)
downloadNetworkManager-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.c29
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;
}