- GNUNET_CRYPTO_hash (name, strlen(name), &key);
-
- msize = sizeof (struct GNUNET_GNS_ClientLookupMessage) + strlen(name);
-#if DEBUG_GNS
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Starting lookup for %s in GNS %p\n",
- name, handle);
-#endif
- pending = GNUNET_malloc (sizeof (struct PendingMessage) + msize);
- lookup_msg = (struct GNUNET_GNS_ClientLookupMessage *) &pending[1];
- pending->msg = &lookup_msg->header;
- pending->handle = handle;
- pending->free_on_send = GNUNET_NO;
- lookup_msg->header.size = htons (msize);
- lookup_msg->header.type = htons (GNUNET_MESSAGE_TYPE_GNS_CLIENT_LOOKUP);
- lookup_msg->key = key;
- memcpy(&lookup_msg[1], name, strlen(name));
- handle->uid_gen++;
- lookup_msg->unique_id = handle->uid_gen;
- GNUNET_CONTAINER_DLL_insert (handle->pending_head, handle->pending_tail,
- pending);
- pending->in_pending_queue = GNUNET_YES;
- lookup_handle = GNUNET_malloc (sizeof (struct GNUNET_GNS_LookupHandle));
- lookup_handle->iter = iter;
- lookup_handle->iter_cls = iter_cls;
- lookup_handle->message = pending;
- lookup_handle->unique_id = lookup_msg->unique_id;
- GNUNET_CONTAINER_multihashmap_put (handle->active_requests, &lookup_msg->key,
- lookup_handle,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
- process_pending_messages (handle);
- return lookup_handle;