mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Merge remote-tracking branch 'tor-gitlab/mr/491' into main
This commit is contained in:
commit
48d778bc32
6
changes/bug40515
Normal file
6
changes/bug40515
Normal file
@ -0,0 +1,6 @@
|
||||
o Minor bugfixes (controller, path bias):
|
||||
- When a circuit's path is specified, in full or in part, from the
|
||||
controller API, do not count that circuit towards our path-bias
|
||||
calculations. (Doing so was incorrect, since we cannot tell whether
|
||||
the controller is selecting relays randomly.) Resolves a "Bug"
|
||||
warning. Fixes bug 40515; bugfix on 0.2.4.10-alpha.
|
@ -179,6 +179,12 @@ struct origin_circuit_t {
|
||||
*/
|
||||
unsigned first_hop_from_controller : 1;
|
||||
|
||||
/**
|
||||
* If true, this circuit's path has been chosen, in full or in part,
|
||||
* by the controller API, and it's okay to ignore checks that we'd
|
||||
* usually do on the path as whole. */
|
||||
unsigned int any_hop_from_controller : 1;
|
||||
|
||||
/**
|
||||
* Tristate variable to guard against pathbias miscounting
|
||||
* due to circuit purpose transitions changing the decision
|
||||
|
@ -363,6 +363,17 @@ pathbias_should_count(origin_circuit_t *circ)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Ignore circuits where the controller helped choose the path. When
|
||||
* this happens, we can't be sure whether the path was chosen randomly
|
||||
* or not. */
|
||||
if (circ->any_hop_from_controller) {
|
||||
/* (In this case, we _don't_ check to see if shouldcount is changing,
|
||||
* since it's possible that an already-created circuit later gets extended
|
||||
* by the controller. */
|
||||
circ->pathbias_shouldcount = PATHBIAS_SHOULDCOUNT_IGNORED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Completely ignore one hop circuits */
|
||||
if (circ->build_state->onehop_tunnel ||
|
||||
circ->build_state->desired_path_len == 1) {
|
||||
|
@ -817,6 +817,8 @@ handle_control_extendcircuit(control_connection_t *conn,
|
||||
circ->first_hop_from_controller = 1;
|
||||
}
|
||||
|
||||
circ->any_hop_from_controller = 1;
|
||||
|
||||
/* now circ refers to something that is ready to be extended */
|
||||
first_node = zero_circ;
|
||||
SMARTLIST_FOREACH(nodes, const node_t *, node,
|
||||
|
Loading…
Reference in New Issue
Block a user