From d719b32495bed06aa3fe7b1594cccf41a70bd66c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 16 Feb 2014 14:55:07 +0000 Subject: [PATCH] force not using DHT for lookups that are only in the master zone (#3325) --- src/gns/gnunet-gns.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gns/gnunet-gns.c b/src/gns/gnunet-gns.c index 33d4b9206..aa35e7281 100644 --- a/src/gns/gnunet-gns.c +++ b/src/gns/gnunet-gns.c @@ -60,6 +60,11 @@ static char *zone_ego_name; */ static char *public_key; +/** + * Set to #GNUNET_YES if we must not use the DHT (only local lookup). + */ +static int only_cached; + /** * raw output */ @@ -206,7 +211,7 @@ lookup_with_keys (const struct GNUNET_CRYPTO_EcdsaPublicKey *pkey, lookup_name, pkey, rtype, - GNUNET_NO, /* Use DHT */ + only_cached, shorten_key, &process_lookup_result, lookup_name); @@ -328,6 +333,7 @@ identity_master_cb (void *cls, const char *name) { struct GNUNET_CRYPTO_EcdsaPublicKey pkey; + const char *dot; id_op = NULL; if (NULL == ego) @@ -338,6 +344,11 @@ identity_master_cb (void *cls, return; } GNUNET_IDENTITY_ego_get_public_key (ego, &pkey); + /* if the name is of the form 'label.gnu', never go to the DHT */ + dot = strchr (lookup_name, '.'); + if ( (NULL != dot) && + (0 == strcasecmp (dot, ".gnu")) ) + only_cached = GNUNET_YES; lookup_with_public_key (&pkey); } -- 2.25.1