mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
Remove an erroneous 0.5 in compute_weighted_bandwidths()
Back in 0.2.4.3-alpha (e106812a77
), when we switched from using
double to using uint64 for selecting by bandwidth, I got the math
wrong: I should have used llround(x), or (uint64_t)(x+0.5), but
instead I wrote llround(x+0.5). That means we would always round
up, rather than rounding to the closest integer
Fixes bug 23318; bugfix on 0.2.4.3-alpha.
This commit is contained in:
parent
04d4786cc4
commit
3c03e237ab
7
changes/bug23318
Normal file
7
changes/bug23318
Normal file
@ -0,0 +1,7 @@
|
||||
o Minor bugfixes (path selection):
|
||||
- When selecting relays by bandwidth, avoid a rounding error that
|
||||
could sometimes cause load to be imbalanced incorrectly. Previously,
|
||||
we would always round upwards; now, we round towards the nearest
|
||||
integer. This had the biggest effect when a relay's weight adjustments
|
||||
should have given it weight 0, but it got weight 1 instead.
|
||||
Fixes bug 23318; bugfix on 0.2.4.3-alpha.
|
@ -2713,7 +2713,7 @@ compute_weighted_bandwidths(const smartlist_t *sl,
|
||||
final_weight = weight*this_bw;
|
||||
}
|
||||
|
||||
bandwidths[node_sl_idx] = final_weight + 0.5;
|
||||
bandwidths[node_sl_idx] = final_weight;
|
||||
} SMARTLIST_FOREACH_END(node);
|
||||
|
||||
log_debug(LD_CIRC, "Generated weighted bandwidths for rule %s based "
|
||||
|
Loading…
Reference in New Issue
Block a user