diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-09-27 13:46:03 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-09-27 13:46:03 +0000 |
commit | 923a5bf28bb709e15fc65786b101b176f8ed4d26 (patch) | |
tree | c2c8068f929598c44f56c71b992a4f7e2ebb773c /src | |
parent | 0630a77f37cea3f7257f6b6ea846c75d40fac2dd (diff) | |
download | gnunet-923a5bf28bb709e15fc65786b101b176f8ed4d26.tar.gz gnunet-923a5bf28bb709e15fc65786b101b176f8ed4d26.zip |
generate STOP message
Diffstat (limited to 'src')
-rw-r--r-- | src/dht/dht_api_new.c | 22 |
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 | ||