diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-05-09 13:20:04 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-05-09 13:20:04 -0400 |
commit | 0b3166fffa0e5e19c63fd95538f87d634444d28c (patch) | |
tree | 3c8d9a20bba0d936fb4659127656ea0fcdaf0e4e /src/or/circuitbuild.c | |
parent | 330116f0343e3b7b6632d3bd1b5c9f6bca87872d (diff) | |
parent | 9da4e25183317ea87d1e7f14e9b13e0530ea0240 (diff) | |
download | tor-0b3166fffa0e5e19c63fd95538f87d634444d28c.tar.gz tor-0b3166fffa0e5e19c63fd95538f87d634444d28c.zip |
Merge branch 'clang_fixes' into maint-0.2.2
Diffstat (limited to 'src/or/circuitbuild.c')
-rw-r--r-- | src/or/circuitbuild.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 0e033a5899..2189e0e557 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -559,7 +559,9 @@ circuit_build_times_create_histogram(circuit_build_times_t *cbt, * Return the Pareto start-of-curve parameter Xm. * * Because we are not a true Pareto curve, we compute this as the - * weighted average of the N=3 most frequent build time bins. + * weighted average of the N most frequent build time bins. N is either + * 1 if we don't have enough circuit build time data collected, or + * determined by the consensus parameter cbtnummodes (default 3). */ static build_time_t circuit_build_times_get_xm(circuit_build_times_t *cbt) @@ -572,6 +574,9 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) int n=0; int num_modes = circuit_build_times_default_num_xm_modes(); + tor_assert(nbins > 0); + tor_assert(num_modes > 0); + // Only use one mode if < 1000 buildtimes. Not enough data // for multiple. if (cbt->total_build_times < CBT_NCIRCUITS_TO_OBSERVE) @@ -579,6 +584,7 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) nth_max_bin = (build_time_t*)tor_malloc_zero(num_modes*sizeof(build_time_t)); + /* Determine the N most common build times */ for (i = 0; i < nbins; i++) { if (histogram[i] >= histogram[nth_max_bin[0]]) { nth_max_bin[0] = i; @@ -600,6 +606,10 @@ circuit_build_times_get_xm(circuit_build_times_t *cbt) histogram[nth_max_bin[n]]); } + /* The following assert is safe, because we don't get called when we + * haven't observed at least CBT_MIN_MIN_CIRCUITS_TO_OBSERVE circuits. */ + tor_assert(bin_counts > 0); + ret /= bin_counts; tor_free(histogram); tor_free(nth_max_bin); |