Commit Graph

26090 Commits

Author SHA1 Message Date
Mike Perry
ad1f8b70b7 Mark state file dirty upon DROPTIMEOUTS command 2020-06-23 20:31:26 +03:00
George Kadianakis
68d848e244 Reinstate support for GUARD NEW/UP/DOWN control port events. 2020-06-23 19:48:37 +03:00
Nick Mathewson
65328fd4e7 Merge branch 'maint-0.4.4' 2020-06-23 12:29:47 -04:00
Nick Mathewson
318753f502 Merge branch 'ticket34382' into maint-0.4.4 2020-06-23 12:29:39 -04:00
Nick Mathewson
ac648fa307 Clarify logic in router_should_skip_orport_reachability_check_family()
The '!=' checks were confusing the issue of what the code was really
doing.
2020-06-23 11:24:20 -04:00
Nick Mathewson
b365179ee0 reachability_warnings_callback: simplify v4/v6_ok logic
Since "skip orport check" is the "and" of v4_ok and v6_ok, we can
just compute v4_ok and v6_ok once, to clarify that we don't enter
this block of code if they're both true.
2020-06-23 11:20:05 -04:00
David Goulet
d08d7e1535 addr: Rename last_resolved_addr to be v4 specific
Part of #33233

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-06-23 09:25:36 -04:00
David Goulet
6da8c0b4fa addr: Rename resolve_my_address to be v4 specific
Part of #33233

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-06-23 09:25:36 -04:00
David Goulet
47f9edde69 config: Change Address to be a LINELIST
With prop312, we want to support IPv4 and IPv6 thus multiple Address statement
(up to 2) will be accepted.

For this, "Address" option becomes a LINELIST so we can properly process the
IPv4 or/and IPv6.

Part of #33233

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-06-23 09:25:36 -04:00
David Goulet
d3bcbccab9 Merge branch 'maint-0.4.4' 2020-06-23 08:52:33 -04:00
David Goulet
5232315168 Merge branch 'tor-github/pr/1937' into maint-0.4.4 2020-06-23 08:52:16 -04:00
Nick Mathewson
ceddc39c59 Merge branch 'pr_1930_squashed' 2020-06-22 15:33:27 -04:00
Neel Chauhan
3bb955a02f Add circuit_extend_add_ipv(4/6)_helper() test 2020-06-22 15:33:03 -04:00
Neel Chauhan
48310a0e76 Fill in missing IPv6 addresses in extend cells 2020-06-22 15:33:03 -04:00
David Goulet
c55e633f74 kist: Document a magic value in channel_should_write_to_kernel()
Closes #40008

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-06-22 15:28:47 -04:00
David Goulet
033f804429 Merge branch 'maint-0.4.4' 2020-06-22 14:57:50 -04:00
Miguel Jacq
3d0e1c42d9 Consistently use 'address' in Invalid v3 address responses to ONION_CLIENT_AUTH commands 2020-06-22 14:56:07 -04:00
Nick Mathewson
bc9979a670 Split "can reach ipv4 orport" from "can reach ipv6 orport".
I've managed to keep this change mainly contained to our
self-testing module.  The changes here are:

  * There are two different variables for tracking "is our orport
    reachable".

  * We have a new function that says whether we can skip a single
    family's orport reachability test; the old function for this now
    tells whether we can skip _all_ orport reachability testing.

    (The name, router_should_skip_orport_reachability_test, is not
    so good.  I will rename it later if I can think of a good
    replacement.)

  * The function that launches orport reachability tests now only
    launches the ones that haven't completed.

  * The function that notes that we're reachable on an ORPort now
    takes a family.

  * Various log messages are cleaned up.
2020-06-18 16:05:16 -04:00
Neel Chauhan
caebfa5f6f Fix typo in test_build_update_descriptors() comment 2020-06-17 20:12:13 -07:00
Nick Mathewson
6c3897826a selftest: turn can_reach_{dir,or}_port into bools 2020-06-17 16:29:24 -04:00
Nick Mathewson
b67f7d722d Update the list of recommended protocol versions to match >=0.3.5.
Since Tor 0.2.9 has been unsupported since January, 0.3.5 is the
oldest supported version, and its features constitute the oldest
recommended feature-set.

This patch updates these recommendations:

   DirCache=2

      Support for consensus diffs.
      New in 0.3.1.1-alpha.

   HSDir=2

      Support for v3 onion service descriptors.
      New in 0.3.0.4-alpha.

   HSIntro=4

      Support for Ed25519 intropoint authentication keys.
      New in 0.3.0-4-alpha.

   HSRend=2

      Support for rendezvous cells longer than 20 bytes.
      New in 0.2.9.4-alpha.

   Link=5

      Link padding and link padding negotiation.
      New in 0.3.3.2-alpha.

   LinkAuth=3

       Ed25519 link authentication.
       New in 0.3.0.1-alpha.
2020-06-17 11:07:43 -04:00
Nick Mathewson
a82c0cdfcf Spelling fix: "RECCOMEND" => "RECOMMEND". 2020-06-17 10:37:47 -04:00
Nick Mathewson
93d582b8e9 Bump to 0.4.4.1-alpha-dev 2020-06-16 19:38:38 -04:00
Nick Mathewson
148291a52e Bump to 0.4.4.1-alpha 2020-06-15 16:45:18 -04:00
Nick Mathewson
9fdaede3f7 Remove AssumeReachable from TestingTorNetwork.
Closes ticket 34446.
2020-06-15 14:08:42 -04:00
David Goulet
8361e3c4ab core: Remove unused files
Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-06-12 14:40:49 -04:00
George Kadianakis
3cb77a9cca Merge branch 'maint-0.4.4' 2020-06-11 17:29:54 +03:00
George Kadianakis
755b8252a4 Fix and update unittests.
Co-authored-by: Florentin Rochet <florentin.rochet@uclouvain.be>
2020-06-11 16:13:20 +03:00
George Kadianakis
714e235a3c Update functions that load and write the guard state file.
Co-authored-by: Florentin Rochet <florentin.rochet@uclouvain.be>
2020-06-11 16:13:13 +03:00
George Kadianakis
d2c3b6ea1e Pick guards on the order they were sampled (prop310).
Co-authored-by: Florentin Rochet <florentin.rochet@uclouvain.be>
2020-06-11 16:13:09 +03:00
Florentin Rochet
7bf0587ef1 Refactor some guard state file parsing code into functions.
Co-authored-by: Florentin Rochet <florentin.rochet@uclouvain.be>
2020-06-11 16:12:31 +03:00
George Kadianakis
1797d05165 Merge branch 'tor-github/pr/1925' 2020-06-10 15:37:59 +03:00
Mike Perry
1300e6a512 Bug 30992: Update tests 2020-06-10 15:37:44 +03:00
Mike Perry
0a4bc8fe90 Bug 30992: Track a padding machine ctr to reduce race issues.
This tracking of the instantiation count should eliminate race conditions due
to starting and stopping machines rapidly. Now, we should no longer obey
STOP commands for previous machines.
2020-06-10 15:37:44 +03:00
Nick Mathewson
354f085e5f Merge remote-tracking branch 'tor-github/pr/1888/head' 2020-06-09 15:44:58 -04:00
Nick Mathewson
d2f136aab1 Bump version to 0.4.5.0-alpha-dev 2020-06-09 14:14:43 -04:00
Mike Perry
9eb0eeb68e Update Trunnel for new machine_ctr field.
This field area was memset to 0 in old versions, which the code treats as
"match any machine instance", for backward compatibility without a protover
bump.
2020-06-08 18:05:34 -05:00
Mike Perry
6ec01c5f72 Provide a DROPTIMEOUTS command to drop CBT times
This allows us to reset CBT when we change guards in fixed-guards onionperf
instances (#33325 and children).
2020-06-07 22:16:25 -05:00
Nick Mathewson
1fb9be5396 Merge remote-tracking branch 'tor-github/pr/1902/head' 2020-06-05 10:08:27 -04:00
rl1987
3e4814edeb Fix some checks of tor_inet_ntoa() return value
Also, fix a format string.
2020-06-05 11:49:24 +03:00
Nick Mathewson
1e98d56617 sandbox: Do not require M_SYSCALL.
M_SYSCALL is used to report information about a sandbox violation,
but when we don't have a definition for it, it still makes sense to
compile.

Closes ticket 34382.
2020-06-04 12:08:02 -04:00
Nick Mathewson
2b98df3c74 Merge remote-tracking branch 'tor-github/pr/1910/head' 2020-06-04 10:33:36 -04:00
c
8b568b50a5
config: Styling fix + use fmt_addr()
Conform to C99 as suggested by nickm on #32888 and use fmt_addr() rather
than tor_addr_to_str_dup()
2020-06-04 13:15:27 +00:00
c
1934e399af
config: Add interface address debug logging
Add logging for "the local network interface addresses" as requested by
ticket #32888.
2020-06-03 14:42:53 +00:00
Nick Mathewson
b4ccafd175 remove a period from a doxygen heading
The other headings don't have periods.
2020-06-02 11:47:20 -04:00
George Kadianakis
22a26a273e Merge branch 'tor-github/pr/1909' 2020-06-02 14:01:49 +03:00
c
7640a95602
config: Add IPv4 Address config debug logging
Per ticket #32888 this should address logging "the Address torrc
option", "and whether it is an IP address, or a DNS name"; or the
detected "local hostname", "and whether it is an IP address, or a DNS
name". Some of these details already seem to be logged, so just add
what's missing.
2020-06-01 13:02:21 +00:00
Roger Dingledine
39f2411b3f Preemptive circs should work with UseEntryGuards 0
Resume being willing to use preemptively-built circuits when
UseEntryGuards is set to 0. We accidentally disabled this feature with
that config setting (in our fix for #24469), leading to slower load times.

Fixes bug 34303; bugfix on 0.3.3.2-alpha.
2020-05-30 02:20:48 -04:00
David Goulet
5922087ea8 Merge branch 'tor-github/pr/1901' 2020-05-28 09:52:29 -04:00
George Kadianakis
8d8a9d7f1d Merge branch 'tor-github/pr/1898' 2020-05-27 15:17:55 +03:00
Neel Chauhan
fd5ea48c27 Add HS v3 status to the SIGUSR1 dumpstats() 2020-05-27 15:16:39 +03:00
Nick Mathewson
43f4324e29 Merge remote-tracking branch 'tor-github/pr/1899/head' 2020-05-21 10:08:48 -04:00
George Kadianakis
3121e5c103 Merge branch 'tor-github/pr/1850' 2020-05-21 16:24:32 +03:00
George Kadianakis
fb281daf29 Merge branch 'tor-github/pr/1861' 2020-05-21 16:22:47 +03:00
rl1987
7a004fce8d Tweak format string 2020-05-21 14:26:08 +03:00
rl1987
a5d28bf88f Check for NULL from tor_dup_ip() 2020-05-21 14:17:15 +03:00
rl1987
ded99992b8 Bail out of format_networkstatus_vote if fmt_addr32() failed.
Something is fishy if we cannot put IP address string into dir-vote line.
2020-05-21 13:43:45 +03:00
rl1987
38cbfda119 Actually, bail out of routerstatus_format_entry() if fmt_addr32() fails 2020-05-21 13:43:41 +03:00
rl1987
8ab7e30484 Check that fmt_addr32() returned non-empty string before putting it into documents 2020-05-21 13:41:19 +03:00
rl1987
d8e24684b6 Check for possible failures of tor_inet_ntop/tor_inet_ntoa in fmt_addr32 and tor_dup_ip 2020-05-21 13:41:15 +03:00
rl1987
b5bfdbfd41 Check output value of tor_inet_ntop/tor_inet_ntoa in dns.c 2020-05-21 13:41:11 +03:00
George Kadianakis
baee2feddd Fix an enum comparison that was blowing up jenkins.
The warning was:
    11:23:10 ../tor/src/feature/hs/hs_service.c: In function 'log_cant_upload_desc':
    11:23:10 ../tor/src/feature/hs/hs_service.c:3118:3: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
See #34254 for more info.

I guess this means that gcc assigned an unsigned type to the
`log_desc_upload_reason_t` enum and it warned if we compared it against 0...

For now I think it's simpler to remove that check instead of turning the enum
to a signed type, or trying to hack it some other way.

From what it seems, enum is up to the compiler on whether it's signed/unsigned:
     https://stackoverflow.com/questions/159034/are-c-enums-signed-or-unsigned
2020-05-21 13:39:49 +03:00
Damon Harris
c4fb3bfed5 Add support for console control signals in Windows 2020-05-20 23:28:39 +05:30
David Goulet
ca13249dcc Merge branch 'tor-github/pr/1886' 2020-05-19 15:18:17 -04:00
David Goulet
ee0fb69fee Merge branch 'tor-github/pr/1897' 2020-05-19 15:17:08 -04:00
David Goulet
5d99985e43 Merge branch 'tor-github/pr/1894' 2020-05-19 15:14:38 -04:00
Nick Mathewson
400bc46d83 doxygen: add a link to src-ref on mainpage.md.
Closes 34246.
2020-05-19 09:44:36 -04:00
Nick Mathewson
9b55a62e73 Merge branch 'maint-0.4.3' 2020-05-19 09:39:12 -04:00
Nick Mathewson
68fe8826dd Doxygen: fix unbalanced groups.
Closes ticket 34255.
2020-05-19 09:18:39 -04:00
teor
8fbcc055e5 node: Clean up some outdated comments
Part of 34200.
2020-05-18 21:53:52 +10:00
teor
73ace125a9 routerlist: Choose bridges for direct bridge connections
When counting and choosing nodes on a client that uses bridges, only
choose bridges for direct connections.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
e46c3d95f4 circuitbuild: Do node checks when counting nodes
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.
2020-05-18 21:53:52 +10:00
teor
766fc86df4 circuitbuild: Do node checks when choosing exits
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.
2020-05-18 21:53:52 +10:00
teor
38c72400b7 routerlist: Split the node checks into their own function
Split the node choosing checks into their own function, so we can call
it independently of iterating through the nodelist.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
a3244c03fb nodelist: Replace int with bool
Make some interfaces and implementations consistent by replacing int
with bool.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
3f7f976d48 nodelist: Stop recursing in router_choose_random_node()
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.
2020-05-18 21:53:52 +10:00
teor
2ea1692c20 nodelist: Rewrite router_crn_flags_t
Re-order the flags in a logical order, and re-number them.
Add missing comments, fix comment typos.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
48413dc65f nodelist: Remove the unused CRN_WEIGHT_FOR_EXIT flag
Part of 34200.
2020-05-18 21:53:52 +10:00
teor
1ec604f0f9 nodelist: Move node flag checks
Move node flag checks to router_add_running_nodes_to_smartlist(), where
they are actually used.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
280195f414 nodelist: Move the v3 onion service rendezvous check
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.
2020-05-18 21:53:52 +10:00
teor
ce11e3bf69 nodelist: Move the single-hop exit check
Check for single-hop exits in router_add_running_nodes_to_smartlist(),
rather than router_choose_random_node().

Part of 34200.
2020-05-18 21:53:52 +10:00
teor
4bcec38fce test/protover: Add debug logs to some tests
Part of 33222.
2020-05-18 21:51:31 +10:00
teor
3efe53562f rust/protover: Fix protocol version support error handling
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.
2020-05-18 21:50:35 +10:00
teor
f05c144d7c rust: declare HSIntro=5
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.
2020-05-18 20:16:11 +10:00
Neel Chauhan
087b466fcf Declare variables in for loops in rend_service_dump_stats() 2020-05-17 15:19:39 -07:00
teor
c6bcc92c17 test/protover: Add tests for summarize flags
Part of 33222.
2020-05-17 22:51:43 +10:00
Neel Chauhan
32e791be09 Fix spacing in if statement in tor_version_parse() 2020-05-16 22:26:30 -07:00
Neel Chauhan
2e0d0360cd Fix spacing in if statement in port_parse_config() 2020-05-16 22:23:59 -07:00
teor
277baf676b versions: Improve the protover summary comments
Part of 33222.
2020-05-15 23:34:43 +10:00
Nick Mathewson
c0dd2a6e39 bump to 0.4.3.5-dev 2020-05-15 09:02:12 -04:00
teor
a702e92c82 protover: Add defines for recent protocol versions
Also update the protover/supported_protocols test.

Part of 33226.
2020-05-15 14:59:10 +10:00
teor
c39394afa2 test/circuitbuild: Tests for node selection flags
Part of 33222.
2020-05-15 12:22:34 +10:00
Nick Mathewson
75fc33f337 bump to 0.4.3.5 2020-05-14 10:37:42 -04:00
teor
5f577b0f25 circuitbuild: Refactor IPv6 extend node selection
Move this complex check into its own function.

Part of 33222.
2020-05-14 22:06:14 +10:00
teor
2e41d82cc5 circuitbuild: Refactor build state node selection flags
Move common build state to node selection flags conversion code into its
own function.

Part of 33222.
2020-05-14 22:05:46 +10:00
teor
6a0fdf381d circuitbuild: test relays sending IPv6 extend cells
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.
2020-05-14 21:15:16 +10:00
teor
d41d13ea73 test: Move the origin circuit function to test helpers
Part of 33222.
2020-05-14 10:44:56 +10:00
teor
9949b545c8 test/circuitstats: Refactor common code
Refactor common circuitstats test code into its own function.

Part of 33222.
2020-05-14 10:38:09 +10:00
teor
e9c9e171ae test/circuitstats: Fix a bunch of coding style issues
Part of 33222.
2020-05-14 10:23:14 +10:00
teor
115a453f04 test/circuitbuild: Add a test for origin_circuit_init()
Part of 33222.
2020-05-13 20:06:27 +10:00