diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-05-09 13:36:40 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-05-09 13:36:40 -0400 |
commit | acd6a4856bccff92eb241b18066ca7df577ab5f2 (patch) | |
tree | 153eb944a6f61e3591831b3fde0385ee4e51e5bd /src/or/circuitbuild.c | |
parent | e36f9d1d9beec0daed57b68f936293dccc77b171 (diff) | |
parent | 0b3166fffa0e5e19c63fd95538f87d634444d28c (diff) | |
download | tor-acd6a4856bccff92eb241b18066ca7df577ab5f2.tar.gz tor-acd6a4856bccff92eb241b18066ca7df577ab5f2.zip |
Merge remote-tracking branch 'origin/maint-0.2.2'
Conflicts:
src/or/connection.c
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 e31cc1e64e..d02ea1678e 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -560,7 +560,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) @@ -573,6 +575,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) @@ -580,6 +585,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; @@ -601,6 +607,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); |