Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ticket34200 #1888

Merged
merged 61 commits into from Jun 9, 2020
Merged

Ticket34200 #1888

merged 61 commits into from Jun 9, 2020

Conversation

Labels
None yet
Projects
None yet
4 participants
@teor2345
Copy link
Contributor

@teor2345 teor2345 commented May 13, 2020

No description provided.

teor2345 and others added 30 commits Apr 30, 2020
Change some function names to distinguish between:
* client first hop reachability (ReachableAddresses)
* relay port reachability self-tests

This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        router_skip_or_reachability router_connect_assume_or_reachable \
        router_skip_dir_reachability router_connect_assume_dir_reachable

It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.

Part of 33222.
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        check_whether_orport_reachable router_skip_orport_reachability_check \
        check_whether_dirport_reachable router_skip_dirport_reachability_check

It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.

Part of 33222.
Part of 33222.
Add an address family argument to the functions that launch relay ORPort
self-test circuits.

Part of 33222.
DIRIND_ANON_DIRPORT never uses our ORPort, so we don't need to set it in
the directory request.

Part of 33222.
Split OR and Dir reachability circuits into their own functions.

Part of 33222.
Remove some redundant variables, and improve some comments.

Explain that there are no advertised IPv6 DirPorts.

Part of 33222.
When launching relay ORPort reachability self-tests, launch tests to the
IPv4 and IPv6 ORPorts (if available).

Part of 33222.
When a relay starts testing reachability, log its IPv6 ORPort.
The existing code logs the IPv4 ORPort and DirPort.

The IPv4 ORPort is required. The other ports are only logged if they
are present.

Part of 33222.
Allow relays and bridges to send IPv4 or IPv6 extend cells.
But keep restricting clients to IPv4 extend cells, because sending IPv6
extend cells would be an obvious version distinguisher.

Part of 33222.
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        router_skip_orport_reachability_check router_should_skip_orport_reachability_check \
        router_skip_dirport_reachability_check router_should_skip_dirport_reachability_check \
        router_connect_assume_or_reachable client_or_conn_should_skip_reachable_address_check \
        router_connect_assume_dir_reachable client_dir_conn_should_skip_reachable_address_check

It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        client_or_conn_should_skip_reachable_address_check router_or_conn_should_skip_reachable_address_check \
        client_dir_conn_should_skip_reachable_address_check router_dir_conn_should_skip_reachable_address_check
Rewrite inform_testing_reachability() to use separate buffers for IPv4
ORPort, IPv6 ORPort, and IPv4 DirPort. And use consistent APIs to fill
those buffers.

Part of 33222.
Document race conditions that we'll resolve in 34067 and 34137.

Part of 33222.
Declare support for the new Relay=3 IPv6 extend protocol,
in C and Rust.

Part of 33226.
Also fix some comment typos, mainly ">=" when the code says "=".

Part of 33226.
But don't implement the actual node selection yet.

Part of 33226.
teor2345 added 9 commits May 14, 2020
Refactor common circuitstats test code into its own function.

Part of 33222.
Add tests for relays sending IPv6 extend cells in
circuit_send_next_onion_skin().

Clients also use this code, check that they can only extend over IPv4
(for now).

Part of 33222.
Move common build state to node selection flags conversion code into its
own function.

Part of 33222.
Move this complex check into its own function.

Part of 33222.
Also update the protover/supported_protocols test.

Part of 33226.
Declare support for the onion service introduction point denial of
service extensions, when building tor with Rust.

Fixes bug 34248; bugfix on 0.4.2.1-alpha.
teor2345 added 15 commits May 18, 2020
Make Rust protocol version support checks consistent with the
undocumented error behaviour of the corresponding C code.

Fixes bug 34251; bugfix on 0.3.3.5-rc.
Check for single-hop exits in router_add_running_nodes_to_smartlist(),
rather than router_choose_random_node().

Part of 34200.
And delete a loop that is now empty. This change should improve tor's
performance, because we no longer iterate through the nodelist twice for
every node in every circuit path.

Part of 34200.
Move node flag checks to router_add_running_nodes_to_smartlist(), where
they are actually used.

Part of 34200.
Re-order the flags in a logical order, and re-number them.
Add missing comments, fix comment typos.

Part of 34200.
Instead, call out to a helper function, repeating the call if needed.

Avoids duplicating exclusions for:
  * the current relay's family, and
  * any exclusions specified by the caller.

Part of 34200.
Make some interfaces and implementations consistent by replacing int
with bool.

Part of 34200.
Split the node choosing checks into their own function, so we can call
it independently of iterating through the nodelist.

Part of 34200.
And check that the correct flags are passed when choosing exits.

Adds the following checks for exits:
* must support EXTEND2 cells,
* must have an ntor circuit crypto key,
* can't require the guard flag,
* can't be a direct connection.

All these checks are already implied by other code.

Part of 34200.
Use the node check function to check that there are enough nodes to
select a circuit path.

Adds these checks, which are implied by other code:
* supports EXTEND2 cells,
* does not allow single-hop exits,

Adds these extra checks:
* has a general-purpose routerinfo,
* if it is a direct connection, check reachable addresses.
These checks reduce the node count, but they will never under-count
nodes.

Bridge nodes aren't handled correctly, we'll fix that in the next
commit.

Part of 34200.
When counting and choosing nodes on a client that uses bridges, only
choose bridges for direct connections.

Part of 34200.
Accept extra lines in nodelist and routerlist due to extra features, and
due to refactors that simplify some functions.

Most of the refactor eliminated duplicate code in smaller functions, so
there's only one large function that got smaller.

Part of 34200.
@torproject-pusher torproject-pusher merged commit 354f085 into torproject:master Jun 9, 2020
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment