struct GNUNET_CRYPTO_EccPublicSignKey target_zone;
/**
- * Handle for DHT lookups. Should be NULL if no lookups are in progress
+ * Handle for DHT lookups. Should be NULL if no lookups are in progress
*/
struct GNUNET_DHT_GetHandle *get_handle;
/**
- * Handle to namestore request
+ * Handle to namestore request
*/
struct GNUNET_NAMESTORE_QueueEntry *namestore_task;
* @param emsg unused
*/
static void
-create_pkey_cont (void* cls,
- int32_t success,
+create_pkey_cont (void* cls,
+ int32_t success,
const char *emsg)
{
struct GetPseuAuthorityHandle* gph = cls;
}
GNUNET_CRYPTO_ecc_key_get_public_for_signature (&gph->shorten_zone_key,
&pub);
- if (GNUNET_OK !=
+ if (GNUNET_OK !=
GNUNET_NAMESTORE_block_decrypt (block,
&pub,
gph->current_label,
* @param gph the handle to our shorten operation
* @param label the label to lookup
*/
-static void
+static void
perform_pseu_lookup (struct GetPseuAuthorityHandle *gph,
const char *label)
-{
+{
struct GNUNET_CRYPTO_EccPublicSignKey pub;
struct GNUNET_HashCode query;
if (rd_count > 0)
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
- "Name `%s' already taken, cannot shorten.\n",
+ "Name `%s' already taken, cannot shorten.\n",
gph->current_label);
/* if this was not yet the original label, try one more
time, this time not using PSEU but the original label */
}
/* name is available */
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Shortening `%s' to `%s'\n",
+ "Shortening `%s' to `%s'\n",
GNUNET_NAMESTORE_z2s (&gph->target_zone),
gph->current_label);
new_pkey.expiration_time = UINT64_MAX;
new_pkey.flags = GNUNET_NAMESTORE_RF_NONE
| GNUNET_NAMESTORE_RF_PRIVATE
| GNUNET_NAMESTORE_RF_PENDING;
- gph->namestore_task
+ gph->namestore_task
= GNUNET_NAMESTORE_records_store (namestore_handle,
&gph->shorten_zone_key,
gph->current_label,
* @param pseu the pseu result or NULL
*/
static void
-process_pseu_result (struct GetPseuAuthorityHandle* gph,
+process_pseu_result (struct GetPseuAuthorityHandle* gph,
const char *pseu)
{
if (NULL == pseu)
gph->label);
perform_pseu_lookup (gph, gph->label);
return;
- }
+ }
/* check if 'pseu' is taken */
perform_pseu_lookup (gph, pseu);
}
{
if (GNUNET_NAMESTORE_TYPE_PSEU == rd[i].record_type)
{
+ char pseu[rd[i].data_size + 1];
+
/* found pseu */
- process_pseu_result (gph,
- (const char *) rd[i].data);
+ memcpy (pseu,
+ rd[i].data,
+ rd[i].data_size);
+ pseu[rd[i].data_size] = '\0';
+ process_pseu_result (gph,
+ pseu);
return;
}
}
/* how did this pass DHT block validation!? */
GNUNET_break (0);
process_pseu_result (gph, NULL);
- return;
+ return;
}
block = data;
if (size !=
- ntohs (block->purpose.size) +
+ ntohl (block->purpose.size) +
sizeof (struct GNUNET_CRYPTO_EccPublicSignKey) +
sizeof (struct GNUNET_CRYPTO_EccSignature))
{
/* how did this pass DHT block validation!? */
GNUNET_break (0);
process_pseu_result (gph, NULL);
- return;
+ return;
}
if (GNUNET_OK !=
GNUNET_NAMESTORE_block_decrypt (block,
/* other peer encrypted invalid block, complain */
GNUNET_break_op (0);
process_pseu_result (gph, NULL);
- return;
+ return;
}
}
{
struct GetPseuAuthorityHandle* gph = cls;
struct GNUNET_HashCode lookup_key;
-
+
gph->namestore_task = NULL;
if (0 != rd_len)
{
}
/* record does not yet exist, go into DHT to find PSEU record */
GNUNET_NAMESTORE_query_from_public_key (&gph->target_zone,
- GNUNET_GNS_TLD_PLUS,
+ GNUNET_GNS_TLD_PLUS,
&lookup_key);
gph->timeout_task = GNUNET_SCHEDULER_add_delayed (DHT_LOOKUP_TIMEOUT,
- &handle_auth_discovery_timeout,
+ &handle_auth_discovery_timeout,
gph);
gph->get_handle = GNUNET_DHT_get_start (dht_handle,
GNUNET_BLOCK_TYPE_GNS_NAMERECORD,
const struct GNUNET_CRYPTO_EccPrivateKey *shorten_zone)
{
struct GetPseuAuthorityHandle *gph;
-
+
+ // if (1) return;
if (strlen (original_label) > GNUNET_DNSPARSER_MAX_LABEL_LENGTH)
{
GNUNET_break (0);
return;
}
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Starting shortening process for `%s' with old label `%s'\n",
+ GNUNET_NAMESTORE_z2s (pub),
+ original_label);
gph = GNUNET_new (struct GetPseuAuthorityHandle);
gph->shorten_zone_key = *shorten_zone;
gph->target_zone = *pub;