mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
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.
This commit is contained in:
parent
61995d3e2c
commit
4eff8b6530
@ -8,3 +8,6 @@
|
||||
- Do not consider nodes with extremely low bandwidths when deciding
|
||||
thresholds for various directory flags. Another fix for 8145.
|
||||
|
||||
- When marking a node as a likely sybil, reset its uptime metrics
|
||||
to zero, so that it cannot time towards getting marked as Guard,
|
||||
Stable, or HSDir. Fix for bug 8147.
|
||||
|
@ -2776,6 +2776,11 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
|
||||
routers_sort_by_identity(routers);
|
||||
omit_as_sybil = get_possible_sybil_list(routers);
|
||||
|
||||
DIGESTMAP_FOREACH(omit_as_sybil, sybil_id, void *, ignore) {
|
||||
(void) ignore;
|
||||
rep_hist_make_router_pessimal(sybil_id, now);
|
||||
} DIGESTMAP_FOREACH_END;
|
||||
|
||||
dirserv_compute_performance_thresholds(rl, omit_as_sybil);
|
||||
|
||||
routerstatuses = smartlist_new();
|
||||
|
@ -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
|
||||
|
@ -24,6 +24,8 @@ void rep_hist_dump_stats(time_t now, int severity);
|
||||
void rep_hist_note_bytes_read(size_t num_bytes, time_t when);
|
||||
void rep_hist_note_bytes_written(size_t num_bytes, time_t when);
|
||||
|
||||
void rep_hist_make_router_pessimal(const char *id, time_t when);
|
||||
|
||||
void rep_hist_note_dir_bytes_read(size_t num_bytes, time_t when);
|
||||
void rep_hist_note_dir_bytes_written(size_t num_bytes, time_t when);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user