aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSupriti Singh <supritisingh08@gmail.com>2014-08-21 22:45:13 +0000
committerSupriti Singh <supritisingh08@gmail.com>2014-08-21 22:45:13 +0000
commitdfdf4604dbc772f414cf0776f247e639f3f132bc (patch)
treeb3c61128741c2452f130e57da327e0aeba0d5300
parent28a7927307f5919892c4df4cf475f0d06bb60830 (diff)
downloadgnunet-dfdf4604dbc772f414cf0776f247e639f3f132bc.tar.gz
gnunet-dfdf4604dbc772f414cf0776f247e639f3f132bc.zip
Free successor_hash_map
-rw-r--r--src/dht/gnunet-service-xdht_neighbours.c2
-rw-r--r--src/dht/gnunet_dht_profiler.c30
2 files changed, 25 insertions, 7 deletions
diff --git a/src/dht/gnunet-service-xdht_neighbours.c b/src/dht/gnunet-service-xdht_neighbours.c
index d4d640a82..51b651670 100644
--- a/src/dht/gnunet-service-xdht_neighbours.c
+++ b/src/dht/gnunet-service-xdht_neighbours.c
@@ -3471,7 +3471,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
3471 GNUNET_break_op (0); 3471 GNUNET_break_op (0);
3472 return GNUNET_OK; 3472 return GNUNET_OK;
3473 } 3473 }
3474 DEBUG("GET FOR DATA_SIZE = %lu\n",msize); 3474
3475 GNUNET_STATISTICS_update (GDS_stats, 3475 GNUNET_STATISTICS_update (GDS_stats,
3476 gettext_noop 3476 gettext_noop
3477 ("# Bytes received from other peers"), (int64_t) msize, 3477 ("# Bytes received from other peers"), (int64_t) msize,
diff --git a/src/dht/gnunet_dht_profiler.c b/src/dht/gnunet_dht_profiler.c
index a2bb1fca1..fbf20f028 100644
--- a/src/dht/gnunet_dht_profiler.c
+++ b/src/dht/gnunet_dht_profiler.c
@@ -785,6 +785,17 @@ start_profiling()
785 } 785 }
786} 786}
787 787
788static int
789hashmap_iterate_remove(void *cls,
790 const struct GNUNET_HashCode *key,
791 void *value)
792{
793 struct GNUNET_HashCode *remove_key = key;
794 GNUNET_assert(GNUNET_YES == GNUNET_CONTAINER_multihashmap_remove(successor_peer_hashmap, key, value));
795 return GNUNET_YES;
796}
797
798
788static unsigned int tries; 799static unsigned int tries;
789 800
790/** 801/**
@@ -814,8 +825,7 @@ successor_stats_cont (void *cls,
814 start_val = 825 start_val =
815 (struct GNUNET_HashCode *) GNUNET_CONTAINER_multihashmap_get(successor_peer_hashmap, 826 (struct GNUNET_HashCode *) GNUNET_CONTAINER_multihashmap_get(successor_peer_hashmap,
816 start_key); 827 start_key);
817 val = GNUNET_new(struct GNUNET_HashCode); 828
818 key = GNUNET_new(struct GNUNET_HashCode);
819 val = start_val; 829 val = start_val;
820 for (count = 0; count < num_peers; count++) 830 for (count = 0; count < num_peers; count++)
821 { 831 {
@@ -835,12 +845,20 @@ successor_stats_cont (void *cls,
835 break; 845 break;
836 } 846 }
837 /* If a peer has its own identity as its successor. */ 847 /* If a peer has its own identity as its successor. */
838 if (0 == memcmp(&key, &val, sizeof (struct GNUNET_HashCode))) 848 if (0 == memcmp(key, val, sizeof (struct GNUNET_HashCode)))
839 { 849 {
840 break; 850 break;
841 } 851 }
842 } 852 }
843 853
854 GNUNET_assert(GNUNET_SYSERR !=
855 GNUNET_CONTAINER_multihashmap_iterate (successor_peer_hashmap,
856 hashmap_iterate_remove,
857 NULL));
858
859 successor_peer_hashmap = GNUNET_CONTAINER_multihashmap_create (num_peers,
860 GNUNET_NO);
861
844 if ((start_val == val) && (count == num_peers)) 862 if ((start_val == val) && (count == num_peers))
845 { 863 {
846 DEBUG("CIRCLE COMPLETED after %u tries", tries); 864 DEBUG("CIRCLE COMPLETED after %u tries", tries);
@@ -849,6 +867,7 @@ successor_stats_cont (void *cls,
849 //are fill atleast O(log N) and then start with the experiments. 867 //are fill atleast O(log N) and then start with the experiments.
850 if(GNUNET_SCHEDULER_NO_TASK == successor_stats_task) 868 if(GNUNET_SCHEDULER_NO_TASK == successor_stats_task)
851 start_profiling(); 869 start_profiling();
870
852 return; 871 return;
853 } 872 }
854 else 873 else
@@ -859,7 +878,6 @@ successor_stats_cont (void *cls,
859 "Maximum tries %u exceeded while checking successor TOTAL TRIES %u" 878 "Maximum tries %u exceeded while checking successor TOTAL TRIES %u"
860 " cirle formation. Exiting\n", 879 " cirle formation. Exiting\n",
861 max_searches,tries); 880 max_searches,tries);
862 //FIXME: FREE HASHMAP
863 if (GNUNET_SCHEDULER_NO_TASK != successor_stats_task) 881 if (GNUNET_SCHEDULER_NO_TASK != successor_stats_task)
864 { 882 {
865 successor_stats_task = GNUNET_SCHEDULER_NO_TASK; 883 successor_stats_task = GNUNET_SCHEDULER_NO_TASK;
@@ -952,6 +970,8 @@ collect_stats (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
952 970
953 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Start collecting statistics...\n"); 971 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Start collecting statistics...\n");
954 GNUNET_assert(NULL != testbed_handles); 972 GNUNET_assert(NULL != testbed_handles);
973 successor_peer_hashmap = GNUNET_CONTAINER_multihashmap_create (num_peers,
974 GNUNET_NO);
955 successor_stats_op = 975 successor_stats_op =
956 GNUNET_TESTBED_get_statistics (num_peers, testbed_handles, 976 GNUNET_TESTBED_get_statistics (num_peers, testbed_handles,
957 "dht", NULL, 977 "dht", NULL,
@@ -1014,8 +1034,6 @@ service_started (void *cls,
1014 struct Collect_Stat_Context *collect_stat_cls = GNUNET_new(struct Collect_Stat_Context); 1034 struct Collect_Stat_Context *collect_stat_cls = GNUNET_new(struct Collect_Stat_Context);
1015 collect_stat_cls->service_connect_ctx = cls; 1035 collect_stat_cls->service_connect_ctx = cls;
1016 collect_stat_cls->op = op; 1036 collect_stat_cls->op = op;
1017 successor_peer_hashmap = GNUNET_CONTAINER_multihashmap_create (num_peers,
1018 GNUNET_NO);
1019 successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay, 1037 successor_stats_task = GNUNET_SCHEDULER_add_delayed (delay,
1020 &collect_stats, 1038 &collect_stats,
1021 collect_stat_cls); 1039 collect_stat_cls);