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");
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;
}
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))
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 */