aboutsummaryrefslogtreecommitdiff
path: root/src/dht/gnunet-service-dht.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-09-17 21:36:49 +0000
committerChristian Grothoff <christian@grothoff.org>2011-09-17 21:36:49 +0000
commit7b0a7042bd85a5e4dd3021e0245ced21fffe634f (patch)
tree27e00991d51655123165eada06d5579de5f454f3 /src/dht/gnunet-service-dht.c
parentd17a12c46c3b32cea91be8b8330066e3301b3f08 (diff)
downloadgnunet-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.c31
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 */
569struct DHTResults 569struct 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 */
587struct RecentRequests 587struct 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;