From: Bart Polot Date: Wed, 5 Feb 2014 17:24:27 +0000 (+0000) Subject: - fix PUT, use proper key X-Git-Tag: initial-import-from-subversion-38251~4776 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c21fc3fd5f445c231658753a1bb87fb7d19d1796;p=oweals%2Fgnunet.git - fix PUT, use proper key --- diff --git a/src/mesh/gnunet-service-mesh_dht.c b/src/mesh/gnunet-service-mesh_dht.c index 9bed8f40a..428024bd8 100644 --- a/src/mesh/gnunet-service-mesh_dht.c +++ b/src/mesh/gnunet-service-mesh_dht.c @@ -220,6 +220,7 @@ dht_get_id_handler (void *cls, struct GNUNET_TIME_Absolute exp, size_t size, const void *data) { struct GMD_search_handle *h = cls; + struct GNUNET_HELLO_Message *hello; struct MeshPeerPath *p; LOG (GNUNET_ERROR_TYPE_DEBUG, "Got results!\n"); @@ -227,6 +228,10 @@ dht_get_id_handler (void *cls, struct GNUNET_TIME_Absolute exp, put_path, put_path_length); h->callback (h->cls, p); path_destroy (p); + LOG (GNUNET_ERROR_TYPE_ERROR, "Got type %u!\n", type); + LOG (GNUNET_ERROR_TYPE_ERROR, "Got size %u!\n", size); + hello = (struct GNUNET_HELLO_Message *) data; + LOG (GNUNET_ERROR_TYPE_ERROR, "HELLO size %u!\n", GNUNET_HELLO_size (hello)); return; } @@ -241,7 +246,7 @@ static void announce_id (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct GNUNET_HashCode phash; - struct GNUNET_HELLO_Message *hello; + const struct GNUNET_HELLO_Message *hello; size_t size; if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) @@ -249,18 +254,30 @@ announce_id (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) announce_id_task = GNUNET_SCHEDULER_NO_TASK; return; } + LOG (GNUNET_ERROR_TYPE_ERROR, "Announce ID\n"); /* TODO * - Set data expiration in function of X * - Adapt X to churn */ hello = GMH_get_mine (); - size = GNUNET_HELLO_size (hello); - GNUNET_CRYPTO_hash (&my_full_id, sizeof (struct GNUNET_PeerIdentity), &phash); + if (NULL == hello || (size = GNUNET_HELLO_size (hello)) == 0) + { + /* Peerinfo gave us no hello yet, try again in a second. */ + announce_id_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, + &announce_id, cls); + LOG (GNUNET_ERROR_TYPE_ERROR, " no hello, waiting!\n"); + return; + } + + LOG (GNUNET_ERROR_TYPE_ERROR, "Hello %p size: %u\n", hello, size); + memset (&phash, 0, sizeof (phash)); + memcpy (&phash, &my_full_id, sizeof (my_full_id)); GNUNET_DHT_put (dht_handle, /* DHT handle */ &phash, /* Key to use */ dht_replication_level, /* Replication level */ - GNUNET_DHT_RO_RECORD_ROUTE | GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE, /* DHT options */ + GNUNET_DHT_RO_RECORD_ROUTE + | GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE, /* DHT options */ GNUNET_BLOCK_TYPE_DHT_HELLO, /* Block type */ size, /* Size of the data */ (const char *) hello, /* Data itself */