mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge branch 'maint-0.3.0' into maint-0.3.1
This commit is contained in:
@@ -121,6 +121,8 @@ big_fake_network_setup(const struct testcase_t *testcase)
|
||||
|
||||
n->is_running = n->is_valid = n->is_fast = n->is_stable = 1;
|
||||
|
||||
/* Note: all these guards have the same address, so you'll need to
|
||||
* disable EnforceDistinctSubnets when a restriction is applied. */
|
||||
n->rs->addr = 0x04020202;
|
||||
n->rs->or_port = 1234;
|
||||
n->rs->is_v2_dir = 1;
|
||||
@@ -1846,14 +1848,17 @@ test_entry_guard_select_for_circuit_confirmed(void *arg)
|
||||
tt_uint_op(state, OP_EQ, GUARD_CIRC_STATE_USABLE_IF_NO_BETTER_GUARD);
|
||||
tt_i64_op(g2->last_tried_to_connect, OP_EQ, approx_time());
|
||||
|
||||
// If we say that the next confirmed guard in order is excluded, we get
|
||||
// The one AFTER that.
|
||||
// If we say that the next confirmed guard in order is excluded, and
|
||||
// we disable EnforceDistinctSubnets, we get the guard AFTER the
|
||||
// one we excluded.
|
||||
get_options_mutable()->EnforceDistinctSubnets = 0;
|
||||
g = smartlist_get(gs->confirmed_entry_guards,
|
||||
smartlist_len(gs->primary_entry_guards)+2);
|
||||
entry_guard_restriction_t rst;
|
||||
memset(&rst, 0, sizeof(rst));
|
||||
memcpy(rst.exclude_id, g->identity, DIGEST_LEN);
|
||||
g2 = select_entry_guard_for_circuit(gs, GUARD_USAGE_TRAFFIC, &rst, &state);
|
||||
tt_ptr_op(g2, OP_NE, NULL);
|
||||
tt_ptr_op(g2, OP_NE, g);
|
||||
tt_int_op(g2->confirmed_idx, OP_EQ,
|
||||
smartlist_len(gs->primary_entry_guards)+3);
|
||||
@@ -1873,6 +1878,16 @@ test_entry_guard_select_for_circuit_confirmed(void *arg)
|
||||
tt_assert(g->is_pending);
|
||||
tt_int_op(g->confirmed_idx, OP_EQ, -1);
|
||||
|
||||
// If we EnforceDistinctSubnets and apply a restriction, we get
|
||||
// nothing, since we put all of the nodes in the same /16.
|
||||
// Regression test for bug 22753/TROVE-2017-006.
|
||||
get_options_mutable()->EnforceDistinctSubnets = 1;
|
||||
g = smartlist_get(gs->confirmed_entry_guards, 0);
|
||||
memset(&rst, 0, sizeof(rst));
|
||||
memcpy(rst.exclude_id, g->identity, DIGEST_LEN);
|
||||
g2 = select_entry_guard_for_circuit(gs, GUARD_USAGE_TRAFFIC, &rst, &state);
|
||||
tt_ptr_op(g2, OP_EQ, NULL);
|
||||
|
||||
done:
|
||||
guard_selection_free(gs);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user