From ba52efc2cea97fa337aa850f3cb23ecde0443a3b Mon Sep 17 00:00:00 2001 From: "Nathan S. Evans" Date: Fri, 26 Nov 2010 15:07:34 +0000 Subject: [PATCH] use remainder from forward_count --- src/dht/gnunet-service-dht.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c index acadd58b5..fff683a7d 100644 --- a/src/dht/gnunet-service-dht.c +++ b/src/dht/gnunet-service-dht.c @@ -2845,17 +2845,20 @@ get_forward_count (unsigned int hop_count, size_t target_replication) } random_value = 0; - /* FIXME: we use diameter as the expected number of hops, but with randomized routing we will likely route to more! */ + forward_count = 1; target_value = target_replication / (diameter + ((float)target_replication * hop_count)); if (target_value > 1) - return (unsigned int)target_value; + { + /* Set forward count to floor of target_value */ + forward_count = (unsigned int)target_value; + /* Subtract forward_count (floor) from target_value (yields value between 0 and 1) */ + target_value = target_value - forward_count; + } else random_value = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, (unsigned int)-1); if (random_value < (target_value * (unsigned int)-1)) - forward_count = 2; - else - forward_count = 1; + forward_count += 1; return forward_count; } -- 2.25.1