aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-09-27 13:46:03 +0000
committerChristian Grothoff <christian@grothoff.org>2011-09-27 13:46:03 +0000
commit923a5bf28bb709e15fc65786b101b176f8ed4d26 (patch)
treec2c8068f929598c44f56c71b992a4f7e2ebb773c /src
parent0630a77f37cea3f7257f6b6ea846c75d40fac2dd (diff)
downloadgnunet-923a5bf28bb709e15fc65786b101b176f8ed4d26.tar.gz
gnunet-923a5bf28bb709e15fc65786b101b176f8ed4d26.zip
generate STOP message
Diffstat (limited to 'src')
-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