summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2016-09-23 18:05:38 +0200
committerMarcello Stanisci <marcello.stanisci@inria.fr>2016-09-23 18:05:38 +0200
commit2624d93cff06eaf31db5df7020cd6d751a591cd7 (patch)
treef5e58e807f8b35f39476540e0cf46983995ee7a7
parent12c2c08fc846ef55758601b8141fa457d7094d0e (diff)
downloadmerchant-2624d93cff06eaf31db5df7020cd6d751a591cd7.tar.gz
merchant-2624d93cff06eaf31db5df7020cd6d751a591cd7.tar.bz2
merchant-2624d93cff06eaf31db5df7020cd6d751a591cd7.zip
making get_instance hashmap based
-rw-r--r--src/backend/taler-merchant-httpd.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/backend/taler-merchant-httpd.c b/src/backend/taler-merchant-httpd.c
index 7f71eb4d..2fd14e88 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -264,6 +264,12 @@ do_shutdown (void *cls)
}
TMH_EXCHANGES_done ();
TMH_AUDITORS_done ();
+
+ if (NULL != by_id_map)
+ GNUNET_CONTAINER_multihashmap_destroy (by_id_map);
+ if (NULL != by_kpub_map)
+ GNUNET_CONTAINER_multihashmap_destroy (by_kpub_map);
+
if (NULL != instances)
{
unsigned int i;
@@ -560,16 +566,23 @@ instances_iterator_cb (void *cls,
struct MerchantInstance *
get_instance (struct json_t *json)
{
- unsigned int i;
struct json_t *receiver;
+ struct GNUNET_HashCode h_receiver;
+
+
/*FIXME who decrefs receiver?*/
if (NULL == (receiver = json_object_get (json, "receiver")))
receiver = json_string ("default");
- for (i=0; NULL != instances[i]; i++)
- if (0 == strcmp (json_string_value (receiver), instances[i]->id))
- return instances[i];
- return NULL;
+ // hash it
+ GNUNET_CRYPTO_hash (json_string_value (receiver),
+ strlen (json_string_value (receiver)),
+ &h_receiver);
+
+ /* We're fine if that returns NULL, the calling routine knows how
+ to handle that */
+ return GNUNET_CONTAINER_multihashmap_get (by_id_map,
+ &h_receiver);
}
/**
@@ -717,14 +730,14 @@ run (void *cls,
}
if (NULL ==
- (by_id_map = GNUNET_CONTAINER_multihashmap_create(0, GNUNET_NO)))
+ (by_id_map = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO)))
{
GNUNET_SCHEDULER_shutdown ();
return;
}
if (NULL ==
- (by_kpub_map = GNUNET_CONTAINER_multihashmap_create(0, GNUNET_NO)))
+ (by_kpub_map = GNUNET_CONTAINER_multihashmap_create(1, GNUNET_NO)))
{
GNUNET_SCHEDULER_shutdown ();
return;