struct PendingMessage *head;
size_t tsize;
+
handle->th = NULL;
if (NULL == buf)
{
{
LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting to process replies from DHT\n");
handle->in_receive = GNUNET_YES;
+
GNUNET_CLIENT_receive (handle->client, &service_message_handler, handle,
GNUNET_TIME_UNIT_FOREVER_REL);
}
uint16_t msize;
int ret;
+
if (NULL == msg)
{
LOG (GNUNET_ERROR_TYPE_DEBUG,
handle->cfg = cfg;
handle->uid_gen =
GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK, UINT64_MAX);
- handle->active_requests = GNUNET_CONTAINER_multihashmap_create (ht_len, GNUNET_NO);
+ handle->active_requests = GNUNET_CONTAINER_multihashmap_create (ht_len, GNUNET_YES);
if (GNUNET_NO == try_connect (handle))
{
GNUNET_DHT_disconnect (handle);
*/
struct GNUNET_DHT_PutHandle *
GNUNET_DHT_put (struct GNUNET_DHT_Handle *handle,
- const struct GNUNET_HashCode * key,
+ const struct GNUNET_HashCode * key,
uint32_t desired_replication_level,
enum GNUNET_DHT_RouteOption options,
enum GNUNET_BLOCK_Type type, size_t size,
- const void *data,
+ const void *data,
struct GNUNET_TIME_Absolute exp,
struct GNUNET_TIME_Relative timeout,
- GNUNET_DHT_PutContinuation cont,
+ GNUNET_DHT_PutContinuation cont,
void *cont_cls)
{
struct GNUNET_DHT_ClientPutMessage *put_msg;
struct PendingMessage *pending;
struct GNUNET_DHT_PutHandle *ph;
+
msize = sizeof (struct GNUNET_DHT_ClientPutMessage) + size;
if ((msize >= GNUNET_SERVER_MAX_MESSAGE_SIZE) ||
(size >= GNUNET_SERVER_MAX_MESSAGE_SIZE))
pending);
pending->in_pending_queue = GNUNET_YES;
get_handle = GNUNET_new (struct GNUNET_DHT_GetHandle);
+ get_handle->key = *key;
get_handle->dht_handle = handle;
get_handle->iter = iter;
get_handle->iter_cls = iter_cls;
get_handle->message = pending;
get_handle->unique_id = get_msg->unique_id;
- GNUNET_CONTAINER_multihashmap_put (handle->active_requests, key, get_handle,
+ GNUNET_CONTAINER_multihashmap_put (handle->active_requests,
+ &get_handle->key,
+ get_handle,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
process_pending_messages (handle);
return get_handle;
/* remove 'GET' from active status */
GNUNET_assert (GNUNET_YES ==
GNUNET_CONTAINER_multihashmap_remove (handle->active_requests,
- &get_msg->key,
+ &get_handle->key,
get_handle));
if (GNUNET_YES == get_handle->message->in_pending_queue)
{
h->dht_handle = handle;
if (NULL != key)
{
- h->key = GNUNET_new(struct GNUNET_HashCode);
+ h->key = GNUNET_new (struct GNUNET_HashCode);
*h->key = *key;
}
m->header.type = htons (GNUNET_MESSAGE_TYPE_DHT_MONITOR_STOP);
m->header.size = htons (sizeof (struct GNUNET_DHT_MonitorStartStopMessage));
m->type = htonl(handle->type);
- m->get = htons(NULL != handle->get_cb);
+ m->get = htons (NULL != handle->get_cb);
m->get_resp = htons(NULL != handle->get_resp_cb);
- m->put = htons(NULL != handle->put_cb);
- if (NULL != handle->key) {
- m->filter_key = htons(1);
- memcpy (&m->key, handle->key, sizeof(struct GNUNET_HashCode));
+ m->put = htons (NULL != handle->put_cb);
+ if (NULL != handle->key)
+ {
+ m->filter_key = htons (1);
+ m->key = *handle->key;
}
GNUNET_CONTAINER_DLL_insert (handle->dht_handle->pending_head,
handle->dht_handle->pending_tail,