aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dht/dht_api_new.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/dht/dht_api_new.c b/src/dht/dht_api_new.c
index 84ed733e8..5b2960db2 100644
--- a/src/dht/dht_api_new.c
+++ b/src/dht/dht_api_new.c
@@ -735,10 +735,28 @@ GNUNET_DHT_get_stop (struct GNUNET_DHT_GetHandle *get_handle)
735{ 735{
736 struct GNUNET_DHT_Handle *handle; 736 struct GNUNET_DHT_Handle *handle;
737 const struct GNUNET_DHT_ClientGetMessage *get_msg; 737 const struct GNUNET_DHT_ClientGetMessage *get_msg;
738 struct GNUNET_DHT_ClientGetStopMessage *stop_msg;
739 struct PendingMessage *pending;
738 740
739 /* FIXME: send STOP to service! */
740 handle = get_handle->message->handle; 741 handle = get_handle->message->handle;
741 get_msg = (const struct GNUNET_DHT_ClientGetMessage*) get_handle->message->msg; 742 get_msg = (const struct GNUNET_DHT_ClientGetMessage*) get_handle->message->msg;
743
744 /* generate STOP */
745 pending = GNUNET_malloc (sizeof (struct PendingMessage) + sizeof (struct GNUNET_DHT_ClientGetStopMessage));
746 stop_msg = (struct GNUNET_DHT_ClientGetStopMessage *) &pending[1];
747 pending->msg = &stop_msg->header;
748 pending->handle = handle;
749 pending->free_on_send = GNUNET_YES;
750 stop_msg->header.size = htons (sizeof (struct GNUNET_DHT_ClientGetStopMessage));
751 stop_msg->header.type = htons (GNUNET_MESSAGE_TYPE_DHT_CLIENT_GET_STOP);
752 stop_msg->reserved = htonl (0);
753 stop_msg->unique_id = get_msg->unique_id;
754 stop_msg->key = get_msg->key;
755 GNUNET_CONTAINER_DLL_insert (handle->pending_head, handle->pending_tail,
756 pending);
757 pending->in_pending_queue = GNUNET_YES;
758
759 /* remove 'GET' from active status */
742 GNUNET_assert (GNUNET_YES == 760 GNUNET_assert (GNUNET_YES ==
743 GNUNET_CONTAINER_multihashmap_remove (handle->active_requests, 761 GNUNET_CONTAINER_multihashmap_remove (handle->active_requests,
744 &get_msg->key, get_handle)); 762 &get_msg->key, get_handle));
@@ -751,6 +769,8 @@ GNUNET_DHT_get_stop (struct GNUNET_DHT_GetHandle *get_handle)
751 } 769 }
752 GNUNET_free (get_handle->message); 770 GNUNET_free (get_handle->message);
753 GNUNET_free (get_handle); 771 GNUNET_free (get_handle);
772
773 process_pending_messages (handle);
754} 774}
755 775
756 776