aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-05 19:55:20 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-05 19:55:20 +0000
commitf51150073e6f1ad16ab8d917e6b3f5437e40eb9c (patch)
treed07a97fde9449e1992b3051e9ae214b9dc6e48ed /src
parent3816824b405add09b33616b995477ffa01fdd68c (diff)
downloadgnunet-f51150073e6f1ad16ab8d917e6b3f5437e40eb9c.tar.gz
gnunet-f51150073e6f1ad16ab8d917e6b3f5437e40eb9c.zip
fix correction according to paper, minimum NSE should be our neighour set
Diffstat (limited to 'src')
-rw-r--r--src/nse/gnunet-service-nse.c8
-rw-r--r--src/nse/nse_api.c3
2 files changed, 8 insertions, 3 deletions
diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c
index e70d6c29e..bc46a537c 100644
--- a/src/nse/gnunet-service-nse.c
+++ b/src/nse/gnunet-service-nse.c
@@ -308,6 +308,7 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em)
308 double q; 308 double q;
309 double r; 309 double r;
310 double temp; 310 double temp;
311 double nsize;
311 312
312 /* Weighted incremental algorithm for stddev according to West (1979) */ 313 /* Weighted incremental algorithm for stddev according to West (1979) */
313 mean = 0.0; 314 mean = 0.0;
@@ -333,12 +334,15 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em)
333 std_dev = sqrt (variance); 334 std_dev = sqrt (variance);
334 current_std_dev = std_dev; 335 current_std_dev = std_dev;
335 current_size_estimate = mean; 336 current_size_estimate = mean;
336 337
337 em->header.size = htons (sizeof (struct GNUNET_NSE_ClientMessage)); 338 em->header.size = htons (sizeof (struct GNUNET_NSE_ClientMessage));
338 em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE); 339 em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE);
339 em->reserved = htonl (0); 340 em->reserved = htonl (0);
340 em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); 341 em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ());
341 em->size_estimate = mean - 1.0 / 3.0; 342 em->size_estimate = mean - 0.332747;
343 nsize = log2 (GNUNET_CONTAINER_multihashmap_size (peers) + 1);
344 if (em->size_estimate < nsize)
345 em->size_estimate = nsize;
342 em->std_deviation = std_dev; 346 em->std_deviation = std_dev;
343 GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)", 347 GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)",
344 (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO); 348 (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO);
diff --git a/src/nse/nse_api.c b/src/nse/nse_api.c
index 0eb165fe5..476c77c2a 100644
--- a/src/nse/nse_api.c
+++ b/src/nse/nse_api.c
@@ -119,7 +119,8 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg)
119 } 119 }
120 client_msg = (const struct GNUNET_NSE_ClientMessage *) msg; 120 client_msg = (const struct GNUNET_NSE_ClientMessage *) msg;
121 h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp), 121 h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp),
122 client_msg->size_estimate, client_msg->std_deviation); 122 client_msg->size_estimate,
123 client_msg->std_deviation);
123 GNUNET_CLIENT_receive (h->client, &message_handler, h, 124 GNUNET_CLIENT_receive (h->client, &message_handler, h,
124 GNUNET_TIME_UNIT_FOREVER_REL); 125 GNUNET_TIME_UNIT_FOREVER_REL);
125} 126}