|
@@ -3294,7 +3294,7 @@ routerstatus_list_update_from_networkstatus(time_t now)
|
|
|
*/
|
|
|
while (1) {
|
|
|
int n_running=0, n_named=0, n_valid=0, n_listing=0;
|
|
|
- int n_v2_dir=0, n_fast=0, n_stable=0, n_exit=0, n_guard=0;
|
|
|
+ int n_v2_dir=0, n_fast=0, n_stable=0, n_exit=0, n_guard=0, n_bad_exit=0;
|
|
|
int n_desc_digests=0, highest_count=0;
|
|
|
const char *the_name = NULL;
|
|
|
local_routerstatus_t *rs_out, *rs_old;
|
|
@@ -3380,6 +3380,8 @@ routerstatus_list_update_from_networkstatus(time_t now)
|
|
|
++n_stable;
|
|
|
if (rs->is_v2_dir)
|
|
|
++n_v2_dir;
|
|
|
+ if (rs->is_bad_exit)
|
|
|
+ ++n_bad_exit;
|
|
|
}
|
|
|
|
|
|
* want. */
|
|
@@ -3428,6 +3430,7 @@ routerstatus_list_update_from_networkstatus(time_t now)
|
|
|
rs_out->status.is_possible_guard = n_guard > n_statuses/2;
|
|
|
rs_out->status.is_stable = n_stable > n_statuses/2;
|
|
|
rs_out->status.is_v2_dir = n_v2_dir > n_statuses/2;
|
|
|
+ rs_out->status.is_bad_exit = n_bad_exit > n_statuses/2;
|
|
|
}
|
|
|
SMARTLIST_FOREACH(routerstatus_list, local_routerstatus_t *, rs,
|
|
|
local_routerstatus_free(rs));
|
|
@@ -3482,6 +3485,7 @@ routers_update_status_from_networkstatus(smartlist_t *routers,
|
|
|
router->is_stable = rs->status.is_stable;
|
|
|
router->is_possible_guard = rs->status.is_possible_guard;
|
|
|
router->is_exit = rs->status.is_exit;
|
|
|
+ router->is_bad_exit = rs->status.is_bad_exit;
|
|
|
}
|
|
|
if (router->is_running && ds) {
|
|
|
ds->n_networkstatus_failures = 0;
|