diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-09-17 21:36:49 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-09-17 21:36:49 +0000 |
commit | 7b0a7042bd85a5e4dd3021e0245ced21fffe634f (patch) | |
tree | 27e00991d51655123165eada06d5579de5f454f3 /src/dht/gnunet-service-dht.c | |
parent | d17a12c46c3b32cea91be8b8330066e3301b3f08 (diff) | |
download | gnunet-7b0a7042bd85a5e4dd3021e0245ced21fffe634f.tar.gz gnunet-7b0a7042bd85a5e4dd3021e0245ced21fffe634f.zip |
fixing 1776 --- do not check uid in client and don't put it into recent
Diffstat (limited to 'src/dht/gnunet-service-dht.c')
-rw-r--r-- | src/dht/gnunet-service-dht.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c index 489d51440..14aabd79d 100644 --- a/src/dht/gnunet-service-dht.c +++ b/src/dht/gnunet-service-dht.c | |||
@@ -568,16 +568,16 @@ struct FindPeerMessageContext | |||
568 | */ | 568 | */ |
569 | struct DHTResults | 569 | struct DHTResults |
570 | { | 570 | { |
571 | /* | 571 | /** |
572 | * Min heap for removal upon reaching limit | 572 | * Min heap for removal upon reaching limit |
573 | */ | 573 | */ |
574 | struct GNUNET_CONTAINER_Heap *minHeap; | 574 | struct GNUNET_CONTAINER_Heap *minHeap; |
575 | 575 | ||
576 | /* | 576 | |
577 | /** | ||
577 | * Hashmap for fast key based lookup | 578 | * Hashmap for fast key based lookup |
578 | */ | 579 | */ |
579 | struct GNUNET_CONTAINER_MultiHashMap *hashmap; | 580 | struct GNUNET_CONTAINER_MultiHashMap *hashmap; |
580 | |||
581 | }; | 581 | }; |
582 | 582 | ||
583 | 583 | ||
@@ -586,15 +586,18 @@ struct DHTResults | |||
586 | */ | 586 | */ |
587 | struct RecentRequests | 587 | struct RecentRequests |
588 | { | 588 | { |
589 | /* | 589 | /** |
590 | * Min heap for removal upon reaching limit | 590 | * Min heap for removal upon reaching limit |
591 | */ | 591 | */ |
592 | struct GNUNET_CONTAINER_Heap *minHeap; | 592 | struct GNUNET_CONTAINER_Heap *minHeap; |
593 | 593 | ||
594 | /* | 594 | #if HAVE_UID_FOR_TESTING > 1 |
595 | /** | ||
595 | * Hashmap for key based lookup | 596 | * Hashmap for key based lookup |
596 | */ | 597 | */ |
597 | struct GNUNET_CONTAINER_MultiHashMap *hashmap; | 598 | struct GNUNET_CONTAINER_MultiHashMap *hashmap; |
599 | #endif | ||
600 | |||
598 | }; | 601 | }; |
599 | 602 | ||
600 | 603 | ||
@@ -3035,9 +3038,11 @@ remove_recent (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
3035 | 3038 | ||
3036 | GNUNET_assert (req != NULL); | 3039 | GNUNET_assert (req != NULL); |
3037 | hash_from_uid (req->uid, &hash); | 3040 | hash_from_uid (req->uid, &hash); |
3041 | #if HAVE_UID_FOR_TESTING > 1 | ||
3038 | GNUNET_assert (GNUNET_YES == | 3042 | GNUNET_assert (GNUNET_YES == |
3039 | GNUNET_CONTAINER_multihashmap_remove (recent.hashmap, &hash, | 3043 | GNUNET_CONTAINER_multihashmap_remove (recent.hashmap, &hash, |
3040 | req)); | 3044 | req)); |
3045 | #endif | ||
3041 | GNUNET_CONTAINER_heap_remove_node (req->heap_node); | 3046 | GNUNET_CONTAINER_heap_remove_node (req->heap_node); |
3042 | GNUNET_CONTAINER_bloomfilter_free (req->bloom); | 3047 | GNUNET_CONTAINER_bloomfilter_free (req->bloom); |
3043 | GNUNET_free (req); | 3048 | GNUNET_free (req); |
@@ -3181,7 +3186,9 @@ route_message (const struct GNUNET_MessageHeader *msg, | |||
3181 | unsigned int target_forward_count; | 3186 | unsigned int target_forward_count; |
3182 | unsigned int forward_count; | 3187 | unsigned int forward_count; |
3183 | struct RecentRequest *recent_req; | 3188 | struct RecentRequest *recent_req; |
3189 | #if HAVE_UID_FOR_TESTING > 1 | ||
3184 | GNUNET_HashCode unique_hash; | 3190 | GNUNET_HashCode unique_hash; |
3191 | #endif | ||
3185 | char *stat_forward_count; | 3192 | char *stat_forward_count; |
3186 | char *temp_stat_str; | 3193 | char *temp_stat_str; |
3187 | 3194 | ||
@@ -3245,8 +3252,9 @@ route_message (const struct GNUNET_MessageHeader *msg, | |||
3245 | 3252 | ||
3246 | 3253 | ||
3247 | GNUNET_CONTAINER_bloomfilter_add (msg_ctx->bloom, &my_identity.hashPubKey); | 3254 | GNUNET_CONTAINER_bloomfilter_add (msg_ctx->bloom, &my_identity.hashPubKey); |
3255 | #if HAVE_UID_FOR_TESTING > 1 | ||
3248 | /* BUG HERE: recent uses unique_id! So if all unique-IDs are 0, we get | 3256 | /* BUG HERE: recent uses unique_id! So if all unique-IDs are 0, we get |
3249 | easily into trouble!!! FIXME! */ | 3257 | easily into trouble!!! Also, this should not even be necessary... */ |
3250 | hash_from_uid (msg_ctx->unique_id, &unique_hash); | 3258 | hash_from_uid (msg_ctx->unique_id, &unique_hash); |
3251 | if (GNUNET_YES == | 3259 | if (GNUNET_YES == |
3252 | GNUNET_CONTAINER_multihashmap_contains (recent.hashmap, &unique_hash)) | 3260 | GNUNET_CONTAINER_multihashmap_contains (recent.hashmap, &unique_hash)) |
@@ -3264,6 +3272,7 @@ route_message (const struct GNUNET_MessageHeader *msg, | |||
3264 | } | 3272 | } |
3265 | } | 3273 | } |
3266 | else | 3274 | else |
3275 | #endif | ||
3267 | { | 3276 | { |
3268 | recent_req = GNUNET_malloc (sizeof (struct RecentRequest)); | 3277 | recent_req = GNUNET_malloc (sizeof (struct RecentRequest)); |
3269 | recent_req->uid = msg_ctx->unique_id; | 3278 | recent_req->uid = msg_ctx->unique_id; |
@@ -3276,11 +3285,13 @@ route_message (const struct GNUNET_MessageHeader *msg, | |||
3276 | GNUNET_TIME_absolute_get ().abs_value); | 3285 | GNUNET_TIME_absolute_get ().abs_value); |
3277 | recent_req->bloom = | 3286 | recent_req->bloom = |
3278 | GNUNET_CONTAINER_bloomfilter_init (NULL, DHT_BLOOM_SIZE, DHT_BLOOM_K); | 3287 | GNUNET_CONTAINER_bloomfilter_init (NULL, DHT_BLOOM_SIZE, DHT_BLOOM_K); |
3288 | #if HAVE_UID_FOR_TESTING > 1 | ||
3279 | GNUNET_CONTAINER_multihashmap_put (recent.hashmap, &unique_hash, recent_req, | 3289 | GNUNET_CONTAINER_multihashmap_put (recent.hashmap, &unique_hash, recent_req, |
3280 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); | 3290 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY); |
3291 | #endif | ||
3281 | } | 3292 | } |
3282 | 3293 | ||
3283 | if (GNUNET_CONTAINER_multihashmap_size (recent.hashmap) > DHT_MAX_RECENT) | 3294 | if (GNUNET_CONTAINER_heap_get_size (recent.minHeap) > DHT_MAX_RECENT) |
3284 | { | 3295 | { |
3285 | recent_req = GNUNET_CONTAINER_heap_peek (recent.minHeap); | 3296 | recent_req = GNUNET_CONTAINER_heap_peek (recent.minHeap); |
3286 | GNUNET_assert (recent_req != NULL); | 3297 | GNUNET_assert (recent_req != NULL); |
@@ -4740,7 +4751,9 @@ main (int argc, char *const *argv) | |||
4740 | { | 4751 | { |
4741 | int ret; | 4752 | int ret; |
4742 | 4753 | ||
4754 | #if HAVE_UID_FOR_TESTING > 1 | ||
4743 | recent.hashmap = GNUNET_CONTAINER_multihashmap_create (DHT_MAX_RECENT / 2); | 4755 | recent.hashmap = GNUNET_CONTAINER_multihashmap_create (DHT_MAX_RECENT / 2); |
4756 | #endif | ||
4744 | recent.minHeap = | 4757 | recent.minHeap = |
4745 | GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN); | 4758 | GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN); |
4746 | recent_find_peer_requests = | 4759 | recent_find_peer_requests = |
@@ -4749,9 +4762,11 @@ main (int argc, char *const *argv) | |||
4749 | (GNUNET_OK == | 4762 | (GNUNET_OK == |
4750 | GNUNET_SERVICE_run (argc, argv, "dht", GNUNET_SERVICE_OPTION_NONE, &run, | 4763 | GNUNET_SERVICE_run (argc, argv, "dht", GNUNET_SERVICE_OPTION_NONE, &run, |
4751 | NULL)) ? 0 : 1; | 4764 | NULL)) ? 0 : 1; |
4765 | #if HAVE_UID_FOR_TESTING > 1 | ||
4752 | GNUNET_assert (0 == GNUNET_CONTAINER_multihashmap_size (recent.hashmap)); | 4766 | GNUNET_assert (0 == GNUNET_CONTAINER_multihashmap_size (recent.hashmap)); |
4753 | GNUNET_CONTAINER_multihashmap_destroy (recent.hashmap); | 4767 | GNUNET_CONTAINER_multihashmap_destroy (recent.hashmap); |
4754 | recent.hashmap = NULL; | 4768 | recent.hashmap = NULL; |
4769 | #endif | ||
4755 | GNUNET_assert (0 == GNUNET_CONTAINER_heap_get_size (recent.minHeap)); | 4770 | GNUNET_assert (0 == GNUNET_CONTAINER_heap_get_size (recent.minHeap)); |
4756 | GNUNET_CONTAINER_heap_destroy (recent.minHeap); | 4771 | GNUNET_CONTAINER_heap_destroy (recent.minHeap); |
4757 | recent.minHeap = NULL; | 4772 | recent.minHeap = NULL; |