From: Nathan S. Evans Date: Fri, 26 Nov 2010 15:07:34 +0000 (+0000) Subject: use remainder from forward_count X-Git-Tag: initial-import-from-subversion-38251~19611 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ba52efc2cea97fa337aa850f3cb23ecde0443a3b;p=oweals%2Fgnunet.git use remainder from forward_count --- 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; }