Commit graph

2049 commits

Author SHA1 Message Date
Roger Dingledine
f181ad7c59 fix typo in comment 2022-06-30 03:48:39 -04:00
Roger Dingledine
2b9d2055f0 typo fix in comment 2022-06-29 15:43:08 -04:00
David Goulet
4f038d224f Merge branch 'tor-gitlab/mr/489' 2022-05-16 08:51:00 -04:00
Alex Xu (Hello71)
851f551dd7 geoip: make geoip_get_country_by_* STATIC
slightly simplifies code and reduces compiled size.
2022-04-23 02:48:32 -04:00
Roger Dingledine
5e6ed1065b document running_long_enough_to_decide_unreachable()
It came as a surprise that Serge, the bridge authority, omits the Running
flag for all bridges in its first 30 minutes after a restart:
https://bugs.torproject.org/tpo/anti-censorship/rdsys/102

The fix we're doing for now is to accept it as correct behavior in
Tor, and change all the supporting tools to be able to handle bridge
networkstatus docs that have no Running bridges.

I'm documenting it here inside Tor too so the next person might not
be so surprised.
2022-03-31 02:46:11 -04:00
David Goulet
649539e82a Merge branch 'tor-gitlab/mr/550' 2022-03-16 14:47:21 -04:00
David Goulet
1a5b612832 Merge branch 'tor-gitlab/mr/548' 2022-03-16 14:03:31 -04:00
David Goulet
32400b5688 hs: Helper function to setup congestion control
We had 3 callsites setting up the circuit congestion control and so this
commit consolidates all 3 calls into 1 function.

Related to #40586

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 14:03:27 -04:00
David Goulet
dd63e8cf9d hs: Transfer ccontrol from circuit to cpath
Once the cpath is finalized, e2e encryption setup, transfer the ccontrol
from the rendezvous circuit to the cpath.

This allows the congestion control subsystem to properly function for
both upload and download side of onion services.

Closes #40586

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 14:03:27 -04:00
David Goulet
1f783bab40 dns: Remove reachable BUG()
Fixes #40587

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-16 13:42:42 -04:00
David Goulet
f64a88e72d Merge branch 'tor-gitlab/mr/490' 2022-03-16 13:35:33 -04:00
David Goulet
7ce17c2b00 relay: Reconfigure libevent options only on DNS params change
Related #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:33:44 -04:00
David Goulet
2cdb5ceb1d relay: On new consensus, reconfigure DNS nameservers
This applies only for relays. Previous commit adds two new consensus
parameters that dictate how libevent is configured with DNS resolution.
And so, with a new consensus, we now look at those values in case they
ever change.

Without this, Exit relay would have to HUP or restart to apply any new
Exit DNS consensus parameters.

Related to #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:26:37 -04:00
David Goulet
347eaa32bf relay: Lower DNS Exit-side timeout
Introduces two new consensus parameter:

  exit_dns_timeout: Number of seconds before libevent should consider
  the DNS request a timeout.

  exit_dns_num_attempts: Number of attempts that libeven should retry a
  previously failing query before calling it a timeout.

Closes #40312

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 15:26:19 -04:00
David Goulet
17a8b3c735 Merge branch 'tor-gitlab/mr/547' 2022-03-15 15:16:30 -04:00
David Goulet
9a47372096 rephist: Introduce a fraction and period for overload onionskin
This code was heavily reused from the previous DNS timeout work done in
ticket #40491 that was removed afterall from our code.

Closes #40560

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 13:28:17 -04:00
David Goulet
1760a12f83 dns: Wake up a dormant tor with a DNSPort request
Fixes #40577

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-15 12:12:57 -04:00
David Goulet
1934e24469 Merge branch 'tor-gitlab/mr/546' 2022-03-14 15:17:05 -04:00
Mike Perry
cf8d9fb1a0 Control port STREAM XON/XOFF status event notification 2022-03-14 15:16:26 -04:00
David Goulet
df6625300d Merge branch 'tor-gitlab/mr/543' 2022-03-11 09:29:41 -05:00
David Goulet
c076ac787f Merge branch 'maint-0.4.6' 2022-03-10 09:18:57 -05:00
David Goulet
be80383a7c Merge branch 'maint-0.4.5' into maint-0.4.6 2022-03-10 09:18:57 -05:00
David Goulet
254b23ab9d hs: Schedule mainloop event on dirinfo change
Due to a possible Guard subsystem recursion, when the HS client gets
notified that the directory information has changed, it must run it in a
seperate mainloop event to avoid such issue.

See the ticket for more information on the recursion. This also fixes a
fatal assert.

Fixes #40579

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-10 08:58:26 -05:00
David Goulet
069b278601 hs: Don't BUG() when setting up RP congestion control
It is possible to not have the descriptor anymore by the time the
rendezvous circuit opens. Don't BUG() on that.

Instead, when sending the INTRODUCE1 cell, make sure the descriptor we
have (or have just fetched) matches what we setup in the rendezvous
circuit.

If not, the circuit is closed and another one is opened for a retry.

Fixes #40576

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-09 12:15:12 -05:00
David Goulet
472c7127c7 Merge branch 'maint-0.4.5' into maint-0.4.6 2022-03-09 08:46:55 -05:00
David Goulet
9efb04bb3e hs: Fix multiple port label on single metric
Prometheus needs unique labels and so this bug was causing an onion
service with multiple ports to have multiple "port=" label for the
metrics requiring a port label.

Fixes #40581

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-08 13:56:54 -05:00
David Goulet
f4aa985cf7 hs: Fix multiple port label on single metric
Prometheus needs unique labels and so this bug was causing an onion
service with multiple ports to have multiple "port=" label for the
metrics requiring a port label.

Fixes #40581

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-03-08 13:50:34 -05:00
Mike Perry
646a1d5f9a Add congestion control fields to CIRC_BW control port event 2022-03-03 20:06:38 +00:00
Dimitris Apostolou
2905e7667e
Fix typos 2022-02-25 11:41:34 +02:00
David Goulet
69f1a7aa59 Merge branch 'tor-gitlab/mr/536' 2022-02-23 13:19:10 -05:00
Roger Dingledine
72729210bf fix a typo in a comment 2022-02-23 10:03:24 -05:00
Mike Perry
2d0377be75 Reject intro2 cells that request unadvertized congestion control. 2022-02-23 00:42:31 +00:00
Mike Perry
77bf932c83 Properly initialize the cc_enabled field in hs intro data. 2022-02-23 00:23:23 +00:00
Mike Perry
b2553bfba2 Use path type hint for Vegas queue parameters.
These parameters will vary depending on path length, especially for onions.
2022-02-22 19:28:35 +00:00
David Goulet
6f45ad3771 hs: Setup congestion control on service rends using intro data
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
729dd14fde hs: Decode and cache the INTRODUCE cell congestion control extension
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
38e9d9b465 hs: Build INTRODUCE extension in the encrypted section
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
c79df44d22 hs: Setup congestion control on client rends
Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:35 +00:00
David Goulet
0eaf0e8a31 hs: Republish onion descriptor on sendme_inc change
Republishing is necessary to ensure that clients connect using the correct
sendme_inc upon any change. Additionally, introduction points must be
re-chosen, so that cached descriptors with old values are not usable.

We do not expect to change sendme_inc, unless cell size or TLS record size
changes, so this should be rare.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
David Goulet
89f5eeefb8 hs: Decode flow-control line
This puts the flow control version (unparsed) in the descriptor. The
client doesn't use it yet.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
David Goulet
95639f35ae hs: Encode flow control value in the descriptor
This simply adds the "flow-control" line, as detailed in prop324, to the
descriptor. No decoding is done at this commit.

Part of #40506
2022-02-22 19:28:34 +00:00
David Goulet
b5439d6bd0 trunnel: Make hs/cell_common.trunnel generic
Move it to extension.trunnel instead so that extension ABI construction
can be used in other parts of tor than just HS cells.

Specifically, we'll use it in the ntorv3 data payload and make a
congestion control parameter extension using that binary structure.

Only rename. No code behavior changes.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-22 19:28:34 +00:00
Mike Perry
a0eeadfba2 Handle other places that use onion handshake type values
We want ntor and ntorv3 to use the same queues and stats.
2022-02-22 19:28:34 +00:00
Mike Perry
812590f8aa Extend info argument updates for non-ntorv3 cases 2022-02-22 19:28:34 +00:00
Mike Perry
76bdadce12 Hook up client usage of congestion control negotiation 2022-02-22 19:28:34 +00:00
Nick Mathewson
93318ba5e2 Convert TODO into TODO-324 for better visibility. 2022-02-22 19:28:33 +00:00
Nick Mathewson
baaabb503c Use protover to signal support for ntor3 + congestion control. 2022-02-22 19:28:33 +00:00
Nick Mathewson
bd2e9a4409 Implement core of ntor3 negotiation.
There are a lot of TODOs about what to send, whom to send it to, and
etc.
2022-02-22 19:28:33 +00:00
David Goulet
d057f45c6c Merge branch 'tor-gitlab/mr/531' 2022-02-16 13:59:37 -05:00
David Goulet
7eb5437878 dirauth: Reject EOL 0.3.5.x relays
Closes #40559

Signed-off-by: David Goulet <dgoulet@torproject.org>
2022-02-16 13:59:30 -05:00