aboutsummaryrefslogtreecommitdiff
path: root/src/or/rephist.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-02-04 11:11:54 -0500
committerNick Mathewson <nickm@torproject.org>2013-02-04 11:11:54 -0500
commit4eff8b65305248b1e7a57d1efdf8f55039719bd7 (patch)
tree45ad7bbf37c0d5b1f583d1c072e0210786bfa080 /src/or/rephist.c
parent61995d3e2cd7631df1fcb9fbdf9333dee24566b4 (diff)
downloadtor-4eff8b65305248b1e7a57d1efdf8f55039719bd7.tar.gz
tor-4eff8b65305248b1e7a57d1efdf8f55039719bd7.zip
When we mark a node as a sybil, mark it down and reset its uptime to 0
This prevents bug 8147, where such nodes would accrue points towards Guard, Fast, HSDir, and so on. Fixes bug 8147.
Diffstat (limited to 'src/or/rephist.c')
-rw-r--r--src/or/rephist.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/or/rephist.c b/src/or/rephist.c
index 925ca88153..34caa4b518 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -422,6 +422,21 @@ rep_hist_note_router_unreachable(const char *id, time_t when)
}
}
+/** Mark a router with ID <b>id</b> as non-Running, and retroactively declare
+ * that it has never been running: give it no stability and no WFU. */
+void
+rep_hist_make_router_pessimal(const char *id, time_t when)
+{
+ or_history_t *hist = get_or_history(id);
+ tor_assert(hist);
+
+ rep_hist_note_router_unreachable(id, when);
+ mark_or_down(hist, when, 1);
+
+ hist->weighted_run_length = 0;
+ hist->weighted_uptime = 0;
+}
+
/** Helper: Discount all old MTBF data, if it is time to do so. Return
* the time at which we should next discount MTBF data. */
time_t