From 39036db684b454ea0d49723ecc56f8e2680bd1c5 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 17 Dec 2012 12:56:25 +0200 Subject: [PATCH] core: Fix looking up "any" agent from the hash table --- src/agent.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/agent.c b/src/agent.c index a5c0c2c97..74bbc6480 100644 --- a/src/agent.c +++ b/src/agent.c @@ -230,22 +230,32 @@ void agent_unref(struct agent *agent) g_free(agent); } +static struct agent *get_any_agent(void) +{ + GHashTableIter iter; + gpointer key, value; + + g_hash_table_iter_init(&iter, agent_list); + if (g_hash_table_iter_next(&iter, &key, &value)) + return value; + + return NULL; +} + struct agent *agent_get(const char *owner) { struct agent *agent; - agent = g_hash_table_lookup(agent_list, owner); - if (agent) - return agent_ref(agent); + if (owner) { + agent = g_hash_table_lookup(agent_list, owner); + if (agent) + return agent_ref(agent); + } if (default_agent) return agent_ref(default_agent); - agent = g_hash_table_lookup(agent_list, NULL); - if (agent) - return agent_ref(agent); - - return NULL; + return get_any_agent(); } static struct agent *agent_create( const char *name, const char *path, -- 2.47.3