From: Christian Grothoff Date: Sun, 16 Feb 2014 14:55:07 +0000 (+0000) Subject: force not using DHT for lookups that are only in the master zone (#3325) X-Git-Tag: initial-import-from-subversion-38251~4695 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d719b32495bed06aa3fe7b1594cccf41a70bd66c;p=oweals%2Fgnunet.git force not using DHT for lookups that are only in the master zone (#3325) --- 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); }