aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Perry <mikeperry-git@fscked.org>2012-12-09 20:56:48 -0800
committerMike Perry <mikeperry-git@fscked.org>2012-12-09 20:56:48 -0800
commitb75880d7b3d02f5c60bf2e215c6e84da4f3e1938 (patch)
tree0d814f884b617497f0a80539520f6d0acfd5b56d /src
parent2dbb62f1b571ea57af111f1f660a5149d160c4fb (diff)
downloadtor-b75880d7b3d02f5c60bf2e215c6e84da4f3e1938.tar
tor-b75880d7b3d02f5c60bf2e215c6e84da4f3e1938.tar.gz
Fix a rather serious use-count state bug.
We need to use the success count or the use count depending on the consensus parameter.
Diffstat (limited to 'src')
-rw-r--r--src/or/circuitbuild.c2
-rw-r--r--src/or/entrynodes.c4
-rw-r--r--src/or/entrynodes.h1
3 files changed, 4 insertions, 3 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index cbc1af961..349063d32 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -1642,7 +1642,7 @@ pathbias_get_closed_count(entry_guard_t *guard)
* if it should return guard->circ_successes or
* guard->successful_circuits_closed.
*/
-static double
+double
pathbias_get_success_count(entry_guard_t *guard)
{
if (pathbias_use_close_counts(get_options())) {
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index 21c09f79c..96b075a35 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -1065,8 +1065,8 @@ entry_guards_parse_state(or_state_t *state, int set, char **msg)
/* Note: We rely on the < comparison here to allow us to set a 0
* rate and disable the feature entirely. If refactoring, don't
* change to <= */
- if ((node->circ_successes/((double)node->circ_attempts)
- < pathbias_get_extreme_rate(options)) &&
+ if (pathbias_get_success_count(node)/node->circ_attempts
+ < pathbias_get_extreme_rate(options) &&
pathbias_get_dropguards(options)) {
node->path_bias_disabled = 1;
log_info(LD_GENERAL,
diff --git a/src/or/entrynodes.h b/src/or/entrynodes.h
index de8c60c33..b9d0e555f 100644
--- a/src/or/entrynodes.h
+++ b/src/or/entrynodes.h
@@ -112,6 +112,7 @@ int find_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port,
int validate_pluggable_transports_config(void);
double pathbias_get_closed_count(entry_guard_t *gaurd);
+double pathbias_get_success_count(entry_guard_t *guard);
#endif