-fix leak
[oweals/gnunet.git] / src / dht / gnunet-service-dht_nse.c
index b8cda34bd6363bd49b29c079971e27bc82dd7c2b..11c02e1572e59a8a240848f6d39f3c8cdeb2b930 100644 (file)
@@ -55,7 +55,11 @@ static void
 update_network_size_estimate (void *cls, struct GNUNET_TIME_Absolute timestamp,
                               double logestimate, double std_dev)
 {
-  log_of_network_size_estimate = logestimate;
+  GNUNET_STATISTICS_update (GDS_stats,
+                            gettext_noop ("# Network size estimates received"),
+                            1, GNUNET_NO);
+  /* do not allow estimates < 0.5 */
+  log_of_network_size_estimate = GNUNET_MAX (0.5, logestimate);
 }
 
 
@@ -77,6 +81,21 @@ GDS_NSE_get ()
 void
 GDS_NSE_init ()
 {
+  unsigned long long hops;
+
+  if ( (GNUNET_YES ==
+       GNUNET_CONFIGURATION_have_value (GDS_cfg,
+                                        "dht",
+                                        "FORCE_NSE")) &&
+       (GNUNET_OK ==
+       GNUNET_CONFIGURATION_get_value_number (GDS_cfg,
+                                              "dht",
+                                              "FORCE_NSE",
+                                              &hops)) )
+  {
+    log_of_network_size_estimate = (double) hops;
+    return;
+  }
   nse = GNUNET_NSE_connect (GDS_cfg, &update_network_size_estimate, NULL);
 }
 
@@ -86,9 +105,9 @@ GDS_NSE_init ()
  */
 void
 GDS_NSE_done ()
-{  
+{
   if (NULL != nse)
-    {
+  {
     GNUNET_NSE_disconnect (nse);
     nse = NULL;
   }