Nick Mathewson
984bd6012a
Merge branch 'reconfig-bridges-bad' into 'main'
...
Require state ownership when using bridges
Closes #612
See merge request tpo/core/arti!889
2022-11-27 19:30:00 +00:00
trinity-1686a
fda17829d5
fix deprecation warnings from rustls
2022-11-26 10:23:05 +01:00
trinity-1686a
0a917a1abc
upgrade rustls to 0.20, ignoring all deprecation warnings
2022-11-26 10:23:05 +01:00
Ian Jackson
1a39a0c7e9
Make ChannelMethod non-exhaustive
...
Enums with variants conditional on cargo features must be
non-exhaustive, because cargo features are supposed to be additive,
meaning that enabling a feature (which might happen due to some random
distant thing) ought not to break things using that enum.
There were surprisingly few places to fix this.
2022-11-24 17:17:36 +00:00
Ian Jackson
04082ab7a9
tor-guardmgr: rustfmt for recent changes
...
Left unsquashed for ease of review
2022-11-24 14:31:05 +00:00
Ian Jackson
ecd0e121a8
tor-guardmgr: NoLock error: add TODO for trying to get lock
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856874
2022-11-24 14:31:05 +00:00
Ian Jackson
112e28d88e
tor-config: Rename to ReconfigureError::UnsupportedSituation
...
From Unsupported. Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856873
This was added in this MR.
Also add the missing semver note.
2022-11-24 14:31:03 +00:00
Ian Jackson
fa918446ac
tor-config: Rename to ConfigBuildError::NoCompileTimeSupport
...
From Unsupported. Following one of the suggestions here
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/889#note_2856873
This was added in 2c37116149
which was
not yet in a release so this isn't a semver break. I have added
the semver note that was omitted in that MR.
2022-11-24 14:30:58 +00:00
Ian Jackson
90a1a10b3c
Merge branch 'sensitive-error' into 'main'
...
Scrub channel target information in errors
See merge request tpo/core/arti!890
2022-11-23 20:18:17 +00:00
Ian Jackson
dc13c93491
Merge branch 'bdm-dormant' into 'main'
...
bridge desc mgr: Honour specified dormancy
Closes #630
See merge request tpo/core/arti!861
2022-11-23 20:13:29 +00:00
Ian Jackson
6a39cdfe57
Merge branch 'watch-drop-option' into 'main'
...
tor-basic-utils: DropNotifyWatchSender: use DropNotifyEofSignallable
See merge request tpo/core/arti!853
2022-11-23 18:55:32 +00:00
Ian Jackson
ef5a58e158
tor-dirclient: Replace OwnedChanTarget with LoggedChanTarget in SourceInfo
...
SourceInfo primarily appears in errors, here and in (indirectly)
tor-dirmgr.
This
1. Makes the errors smaller
2. Redacts (currently, scrubs) the chantarget when safe logging is enabled
This commit therefore deals with both tor-dirmgr and tor-dirclient
errors, from the pov of error information that should become sensitive
as part of bridge support.
The error pyaloads directly in tor_dirmgr/src/err.rs don't seem to
contain anything in that category.
2022-11-23 18:28:38 +00:00
Ian Jackson
b822e2ebe9
tor-cirmgr: Replace OwnedChanTarget with LoggedChanTarget in errors
...
This
1. Makes the errors smaller
2. Redacts (currently, scrubs) the chantarget when safe logging is enabled
The other error variants in tor-circmgr::Error don't seem to contain
information that should become sensitive as part of bridge support.
2022-11-23 18:28:38 +00:00
Ian Jackson
e635383dfb
tor-chanmgr: Invent [Box]ChanSensitive for two error payloads
...
This
1. Makes the errors smaller (in the case of Io's PtTargetAddr;
ChannelBuild's addresses are already indirected in a Vec).
2. Redacts (currently, scrubs) the PtTargetAddr and SocketAddr
when safe logging is enabled
These are the remaining error variants in tor-chanmgr that contain
information that should become sensitive as part of bridge support.
2022-11-23 18:28:38 +00:00
Ian Jackson
32357b3de7
tor-chanmgr: Replace OwnedChanTarget with LoggedChanTarget in errors
...
This
1. Makes the errors smaller
2. Redacts (currently, scrubs) the chantarget when safe logging is enabled
This commit doesn't treat other should-be-sensitive inforemation in
errors just yet. That will come in a moment.
2022-11-23 18:28:38 +00:00
Ian Jackson
45a79bf725
tor-linkspec: Provide LoggedChanTarget type alias and utility method
...
This makes it easy to talk about, and construct, a
BoxSensitive<OwnedChanTarget>, which is what we'll use in errors.
2022-11-23 18:28:38 +00:00
Ian Jackson
bbc84bf9f4
safelog: Provide BoxSensitive
2022-11-23 18:28:38 +00:00
Ian Jackson
4f193f1017
safelog: Remove type argument from `impl_display_traits`
...
We're going to have this same macro implement the same traits for a
second type. And its function is specific to `Sensitive`, so have it
know that.
2022-11-23 18:28:34 +00:00
Ian Jackson
b77fd893a4
safelog: Provide some more accessors
...
We're about to use `.as_inner()` in a few places, and `.as_ref()` (by
analogy with `Option`) seems obviously necessary.
2022-11-23 18:28:34 +00:00
Ian Jackson
1c085cf401
bridge desc mgr: Add dormancy comment to effective_parallelism
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/861#note_2856922
2022-11-23 18:20:58 +00:00
Ian Jackson
68acedccfd
bridge desc mgr: Test dormancy
2022-11-23 18:20:58 +00:00
Ian Jackson
e0c4eed549
bridge desc mgr: Honour specified dormancy
...
Fixes #630
2022-11-23 18:20:58 +00:00
Ian Jackson
a33df9a5f5
bridge desc mgr: Introduce effective_parallelism helper
2022-11-23 18:20:58 +00:00
Ian Jackson
2c98351e2d
bridge desc mgr: Move set_dormancy to impl that is for mock too
2022-11-23 18:20:58 +00:00
Nick Mathewson
ce0f8f41cb
Merge branch 'bridge-config-arc' into 'main'
...
Make BridgeConfig be Arc, so no Arc<BridgeConfig>
Closes #635
See merge request tpo/core/arti!885
2022-11-23 17:52:26 +00:00
Ian Jackson
fbd4b88044
Merge branch 'test-config' into 'main'
...
tor-guardmgr: Fix visibility of TestConfig with no features enabled
See merge request tpo/core/arti!875
2022-11-23 17:51:05 +00:00
Ian Jackson
4d502bd818
arti-client: Add comment about Option DormantMode
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/852#note_2854090
(ftaod, that is a different MR to this one)
2022-11-23 17:50:05 +00:00
Ian Jackson
c82cda85d6
tor-basic-utils: DropNotifyWatchSender: use DropNotifyEofSignallable
...
This will help avoid the programmer making the mistake I made here:
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/852#note_2854029
2022-11-23 17:50:05 +00:00
Nick Mathewson
c0a6fb3e0f
Merge branch 'stability' into 'main'
...
arti-client, tor-config: Remove stability warning from top-level docs
See merge request tpo/core/arti!878
2022-11-23 17:50:01 +00:00
Ian Jackson
63a799a118
tor-basic-utils: DropNotifyWatchSender test: introduce I
...
We do want to test this with a non-Option type, but we are going to
have to wrap it up.
2022-11-23 17:50:01 +00:00
Nick Mathewson
e25ed00fd1
Merge branch 'remove_deadcode_allow' into 'main'
...
guardmgr: Remove a now-unneeded "allow(dead_code)"
See merge request tpo/core/arti!862
2022-11-23 17:45:26 +00:00
Nick Mathewson
3f5699b95a
ChanMgr: Another attempt to build on CI.
2022-11-23 11:25:15 -05:00
Nick Mathewson
74ebc904e3
ChanMgr: Rename Factory -> CompoundFactory
2022-11-23 11:10:34 -05:00
Nick Mathewson
1249bedbb0
ChanMgr: Fix a few more conditional-compilation issues
2022-11-23 11:10:34 -05:00
Nick Mathewson
2fb36f5585
ChanMgr: Remove Arc aliases.
2022-11-23 11:10:34 -05:00
Nick Mathewson
f8e103bb94
Mark set-default-factory API as experimental.
2022-11-23 11:10:34 -05:00
Nick Mathewson
c04aa9baed
Make ChannelFactory and AbstractPtMgr require Send+Sync
2022-11-23 11:10:34 -05:00
Nick Mathewson
bc1de60d6d
ChanMgr: Implement functions that replace channel factories.
...
This commit makes it possible to replace the default channel factory
(used when there is no PtMgr), and to replace the PtMgr.
This is part of #659 .
2022-11-23 11:10:34 -05:00
Ian Jackson
ecaf8b23b8
tor-guardmgr: Refuse to configure bridges if we don't have the lock
...
Fixes #612
2022-11-23 13:03:14 +00:00
Ian Jackson
c0b297c99c
tor-guardmgr: make replace_bridge_config fallible
...
The error type needs to be convertible to GuardMgrError and also to
ReconfigureError. Neither of those is right, so we need a new error
type.
2022-11-23 13:00:10 +00:00
Ian Jackson
8cddb0a06a
tor-guardmgr: Replace a let _ignore with a typed version
...
`let _ignore =` isn't great because if the function called is
currently infallible, but becomes fallible, it suppresses the
detection of the error check.
A better pattern is to specify the type of the ignored value.
I'm about to do precisely this, here.
I did a git-grep and `let _ignore =` seems very common. Let's not
deal with all those now.
2022-11-23 13:00:05 +00:00
Nick Mathewson
a688e4afc9
ChanMgr: move the AbstractChanFactory into MgrState.
...
We will want the freedom to replace this, so it needs to go behind a
lock. We need to be able to Clone it cheaply now, so we're using an
Arc instead of a Box.
2022-11-22 14:41:44 -05:00
Nick Mathewson
fc74bb8bb4
Merge branch 'retire_on_guard_cfg_change' into 'main'
...
CircMgr: retire all circuits if bridge configuration changes.
Closes #650
See merge request tpo/core/arti!880
2022-11-22 19:00:20 +00:00
Nick Mathewson
09092394a8
Merge branch 'main' into 'abstract-pt-mgr'
...
# Conflicts:
# crates/tor-chanmgr/src/factory.rs
2022-11-22 18:12:25 +00:00
eta
2f75702cec
Replace TransportRegistry with AbstractPtMgr
...
It doesn't make much sense to have the pluggable transport manager be a
registry, so replace its interface with a more narrowly defined, less generic
version.
Other changes:
- instead of returning a &-reference, it returns an owned Arc, which
should make the ptmgr easier to implement while allowing efficient
reuse
- provision for error handling is added, but will probably be revised in
a future commit pending discussion
- tor-ptmgr code that would generate warnings as a result of this change
is temporarily removed
This is a split out version of arti!886, intended so work on arti#659
can proceed.
2022-11-22 18:09:06 +00:00
Nick Mathewson
f2121101d1
Even more comments explaining circuit cancellation.
2022-11-22 12:53:32 -05:00
Nick Mathewson
e7c942c918
Improve notes surrounding circuit cancellation.
...
It turns out that bug #656 is not a real bug, but it was easy to
overlook the code that prevented it.
Closes #656 .
2022-11-22 12:53:32 -05:00
Nick Mathewson
c0aa10d409
CircMgr: retire all circuits if bridge configuration changes.
...
Closes #650 .
2022-11-22 12:53:32 -05:00
Ian Jackson
ee87097dc1
BridgeConfig: Replace all Arc<BridgeConfig> with BridgeConfig
...
BridgeConfig is itself an Arc now, so these are redundant.
2022-11-22 15:33:21 +00:00
Ian Jackson
3caf7aafc0
BridgeConfig: Make it be a newtype around Arc<Inner>
...
This leaves the external API of this type unchanged, but now it's much
smaller and quite cheap to clone.
2022-11-22 15:33:21 +00:00
Ian Jackson
5d8d3f79fa
bridge config: Remove a done TODO
...
This was done by !874 and #604 closed accordingly.
2022-11-22 15:08:28 +00:00
Ian Jackson
822a6ce32b
TransportId: Fix test case for no pt-target
...
Fixes
cargo +stable clippy --manifest-path=/home/ian/Rustup/Arti/arti/Cargo.toml --locked --target-dir=target --offline -p tor-linkspec --no-default-features --all-targets
giving
446 | .method(ChannelMethod::Pluggable(PtTarget::new(
| ^^^^^^^^^ variant or associated item not found in `transport::ChannelMethod`
2022-11-22 14:59:25 +00:00
Ian Jackson
8406474435
bridge config parsing tests: Show expected error message in asssrt
2022-11-22 14:59:25 +00:00
Ian Jackson
987f67d7f6
bridge config parsing: Parse transport as TransportId (fmt)
2022-11-22 14:59:25 +00:00
Ian Jackson
e57d3061db
bridge config parsing: Parse transport as TransportId
...
Fixes #653
2022-11-22 14:59:25 +00:00
Ian Jackson
6b2940bb7d
bridge config parsing: Move unsupported block
...
This will make the next commit textually smaller.
2022-11-22 14:59:25 +00:00
Ian Jackson
28ca346297
TransportId: Parse "bridge" as builtin transport
...
This will allow transport="bridge" in bridge configurations, etc.
Doing it at this layer means it will be recognised everywhere.
2022-11-22 14:59:25 +00:00
Ian Jackson
813f0a71c9
TransportId: Provide new_builtin and new_pluggable
...
I think normal Rustic practice is to provide a real constructor as
well as just `Default`.
2022-11-22 14:59:25 +00:00
Ian Jackson
331aa673ea
TransportId: Provide name accessor and deconstructor
...
We are maintaining the notion that at some point this thing might
grow additional variants.
2022-11-22 14:59:25 +00:00
Ian Jackson
4b8010782a
TransportId: Document and change string repr for builtin
...
* Change the Display of builtin to "-"
* Parse "" and "-" as builtin, as well as "<none>"
* Document this
2022-11-22 14:59:21 +00:00
Ian Jackson
fe0970e28e
TransportId: Add test case for builtin Display repr
2022-11-22 14:59:21 +00:00
Ian Jackson
17002c7462
bridge non-support: Add doc notes to GuardMgrConfig::bridges_enabled
2022-11-21 16:46:19 +00:00
Ian Jackson
ec7f058cfd
bridge non-support: Test that we reject configs
2022-11-21 16:46:19 +00:00
Ian Jackson
b2607fd8c8
bridge non-support: De-cfg the primary bridge config fields
...
We now parse the `bridges.enabled` BoolOrAuto, and the
`bridges.bridges` list.
The `bridges.bridges` list is Vec<()> in the builder, and Vec<Void> in
the built config. Ie, it is simply a count, and vanishes in the built
config.
But this count triggers us to try to call build(), to try to parse
bridges, and to try to set and honour the enablement boolean.
The result is that the type system now ensures that if bridges are
disabled, but specified (either by listing them in the config, or
writing `enabled=true`), we inevitably try to insist that we have a
non-empty Vec<Void>, which is of course impossible.
There will be a test case too for those who think this too abstract a
way to guarantee this property :-).
2022-11-21 16:46:19 +00:00
Ian Jackson
939d11c034
bridge non-support: Provide a better BridgeConfigBuilder
...
This type now does all the things people expect of it: you can (try
to) deserialize it, parse it from a string, and call build on it.
2022-11-21 16:46:19 +00:00
Ian Jackson
c4a3b0b5c4
bridge config: Feature-gate the error variants
...
This leaves this enum empty of actual errors, when bridge-client is
disabled.
We're going to add the not supported variant in a moment.
2022-11-21 16:46:19 +00:00
Ian Jackson
5800b1cdc9
bridge config: Move error to its own file
...
The dummy module is going to need an error type just like this but
with only the disabled variant. To avoid that dummy enum getting out
of step with the nontrivial one, we're going to make them the same.
So as a first step, break this out into its own file.
2022-11-21 16:46:19 +00:00
Ian Jackson
f087c7121d
bridge non-support: Move dummy bridge module into own file
...
A bit more stuff is going to appear here, so it's getting to be rather
much for an inline module.
2022-11-21 16:46:19 +00:00
Ian Jackson
7688973fd4
arti cfg test: Break out expect_err_contains function
...
Maybe this will want to be in tor-error or something but put it here
for now.
2022-11-21 16:46:19 +00:00
Ian Jackson
fa4f842340
bridge non-support: Disable the test for now
...
This test will start to fail if you compile without bridge support,
because we'll start rejecting the test configurations with bridges
specified.
We'll add a proper test for this later.
2022-11-21 16:46:19 +00:00
Ian Jackson
2c37116149
tor-config: introduce ConfigBuildError::Unsupported
...
And use it in bridge configuration parsing.
2022-11-21 15:46:53 +00:00
Ian Jackson
ac4869633a
tor-config: ConfigBuildError::within: Introduce add_prefix
2022-11-21 15:46:53 +00:00
Ian Jackson
681b4062ff
bridge config builder: Introduce error constructor helpers (fmt noise)
2022-11-21 15:46:53 +00:00
Ian Jackson
85d7651827
bridge config builder: Introduce error constructor helpers
...
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/874/diffs?commit_id=12d13428d8fcc68b7b0f231bac9fc130b3eeb18b#d53209cbcd12771c549f3a130379ecb65dd60145_100_193
2022-11-21 15:46:53 +00:00
Ian Jackson
b0bd9b3fb3
bridge config builder: Document one id of each type restriction
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/874/diffs?commit_id=620cc90f6dcdad20f49a001a9e04d191a323e904#d53209cbcd12771c549f3a130379ecb65dd60145_100_124
2022-11-21 14:58:24 +00:00
Ian Jackson
897d8a0ee3
bridge config builder: Document PT one address restriction
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/874/diffs?commit_id=620cc90f6dcdad20f49a001a9e04d191a323e904#d53209cbcd12771c549f3a130379ecb65dd60145_100_121
2022-11-21 14:58:24 +00:00
Ian Jackson
58710b9635
Make the bridge list in the builder be a list of BridgeConfigBuilder
...
By changing MultilineListBuilder.
2022-11-21 14:58:24 +00:00
Ian Jackson
9aa1c56fc9
BridgeConfigBuilder: Allow (de)ser to/from bridge lines
...
That the *de*serialisation works as expected will be tested properly
in just a moment, because when we plumb this all the way through, it
will be what parses the bridge lines in the example config file.
2022-11-21 14:58:24 +00:00
Ian Jackson
91536da10a
tor-basic-utils: Provide helper for serde flexible parsing
2022-11-21 14:58:24 +00:00
Ian Jackson
345d8e130b
BridgeConfigBuilder: Implement FromStr
2022-11-21 14:58:24 +00:00
Ian Jackson
cd2070b3ba
BridgeConfigBuilder: Introduce build() function
...
And test cases for it, and its errors.
2022-11-21 14:58:24 +00:00
Ian Jackson
589f74a78f
BridgeConfigBuilder: Introduce the struct with the dictionary repr
...
This struct is going to be the principal "dictionary-style" serde
representation for a bridge, and the builder, making this all in
keeping with our usual approach.
In this commit:
* Introduce the struct (defining the serialisation)
* Provide the setters (defining the Rust API)
* Add success test cases (not all of the data in which is used yet)
2022-11-21 14:58:24 +00:00
Ian Jackson
2327c7657c
tor-basic-utils: list_builder: Introduce DirectDefaultEmptyListBuilderAccessors
...
This trait can have this ludicrously long name because no-one needs to
import it.
2022-11-21 14:54:39 +00:00
Ian Jackson
88b60a1fa7
BridgeAddr rename: update tor_guardmgr::bridge::config
...
Here is where my motivation is and I'm working on this code now, so do
this renaming cleanup now.
2022-11-21 14:54:39 +00:00
Ian Jackson
fec66077de
BridgeAddr rename from PtTargetAddr: Update in tor-linkspec
...
And the error too.
We need this for the API for BridgeConfigBuilder, where the user can
specify any kind of target "address", even a hostname.
It's already non-conditional, it's just that the name is too limiting.
In this commit:
* Change in tor-linkspec
* Export transitional aliases
* Add TODOs to remove the transitional aliases
2022-11-21 14:54:39 +00:00
Ian Jackson
224f4905e4
tor-linkspec: Provide deconstructors for PtTargetSettings and PtTarget
2022-11-21 14:54:39 +00:00
Ian Jackson
0b14b93f76
arti-client, tor-config: Remove stability warning from top-level docs
...
Ticket #285 is closed and most of this is stable now we think.
(There are still a couple of stability warnings for specific types in
tor-config, which aren't exposed at the arti-client level.)
2022-11-21 12:06:27 +00:00
Ian Jackson
113341e397
cfg compilation: Add two allows
2022-11-18 18:50:00 +00:00
Ian Jackson
285a7988bb
Merge branch 'fix_nightly_20221118' into 'main'
...
Fix warnings and breakage in nightly (2022-11-18 edition)
See merge request tpo/core/arti!872
2022-11-18 16:43:16 +00:00
Ian Jackson
7ec52057dc
tor-guardmgr: Fix visibility of TestConfig with no features enabled
...
Without this, tor-guardmgr tests don't build when run without the
crate's own testing feature enabled.
2022-11-18 16:30:46 +00:00
Nick Mathewson
de9f3177b0
Fix a missing import in tests.
...
I'm not sure why the CI didn't reject this the first time around.
2022-11-18 10:34:19 -05:00
Nick Mathewson
47041bd4ce
Merge branch 'refactor_into_ownedchantarget' into 'main'
...
CircMgr: Refactor DirSpecificTarget constructor
See merge request tpo/core/arti!866
2022-11-18 15:21:46 +00:00
Nick Mathewson
829cb708e2
Fix a couple of rustdoc issues.
...
These slipped in while nightly was broken.
2022-11-18 10:19:54 -05:00
Nick Mathewson
d51162e55b
Fix a bunch of "needless borrow" warnings on nightly
...
It looks like, despite a few false starts, they've got this warning
right; there weren't any false positives.
2022-11-18 10:12:05 -05:00
Nick Mathewson
ec148a63cb
CircMgr: Refactor DirSpecificTarget constructor
...
This commit replaces the
`impl From<&T> for OwnedChanTarget where T:ChanTarget`
with a new `IntoOwnedChanTarget` trait. This lets us be explicit
that we're constructing an owned object, and not just converting
something.
No semver change needed, since these APIs haven't been released.
----------- (new description)
2022-11-18 09:55:46 -05:00
Nick Mathewson
c666133be4
Merge branch 'mark-bridges-not-experimental' into 'main'
...
Mark bridge and PT-related APIs as non-experimental.
Closes #643
See merge request tpo/core/arti!865
2022-11-18 14:22:31 +00:00
Nick Mathewson
76e41b8bf6
circmgr: make some imports conditional
...
This resolves an "unused import" warning when bridges are not
enabled.
2022-11-18 08:53:47 -05:00
Nick Mathewson
2c366927cc
arti-client: make bridge-client depend on dirmgr/bridge-client
...
This resolves some errors when building with `bridge-client` but not
with `--all-features`.
2022-11-18 08:53:47 -05:00
Nick Mathewson
b0e337d22d
arti: Mark bridge and pt support non-experimental, and on-by-default
2022-11-18 08:53:47 -05:00
Nick Mathewson
9229e1a59b
arti: Split long lines in Cargo.toml
...
This will make the next commit easier to review.
2022-11-18 08:53:47 -05:00
Nick Mathewson
f1f6005474
arti-client: Mark "bridge-client" and "pt-client" as non-experimental
2022-11-18 08:53:47 -05:00
Nick Mathewson
09591bcc5a
arti-client: split long lines in Cargo.toml
...
Doing this separately to make the next commit easier to read.
2022-11-18 08:53:47 -05:00
Nick Mathewson
9f661e264f
dirmgr: make "bridge-client" non-experimental.
2022-11-18 08:53:47 -05:00
Nick Mathewson
471cdc77f2
guardmgr: Make bridge-client and pt-client non-experimental
2022-11-18 08:53:47 -05:00
Nick Mathewson
1928fd0b72
circmgr: Make "specific-relay" non-experimental.
2022-11-18 08:53:47 -05:00
Nick Mathewson
b5a9e0b475
chanmgr: Make "pt-client" non-experimental.
2022-11-18 08:53:47 -05:00
Nick Mathewson
c441853cb8
Merge branch 'log_guard_status' into 'main'
...
GuardMgr: Log significant guard/bridge status changes at info/warn
Closes #627
See merge request tpo/core/arti!869
2022-11-18 13:51:42 +00:00
Ian Jackson
c0fa78fd4d
Merge branch 'display_chan_target' into 'main'
...
ChanTarget: Add a display function, with better output.
Closes #647
See merge request tpo/core/arti!868
2022-11-18 13:19:10 +00:00
Ian Jackson
fc047b4b3c
Merge branch 'inst_as_arg' into 'main'
...
GuardMgr: Resolve a `TODO pt-client` by having `update` take an `Instant`.
See merge request tpo/core/arti!863
2022-11-18 12:42:02 +00:00
Nick Mathewson
cb3a790084
netdoc: Add a test for routerdesc family parsing.
2022-11-17 14:40:15 -05:00
Nick Mathewson
5655b95b54
netdoc: Correct and test some tricky routerdesc errors
...
These required hex-editing identity certificates :P
2022-11-17 14:35:40 -05:00
Nick Mathewson
c0bc7bb11e
netdoc: Add tests for routerdesc accessors.
2022-11-17 13:43:32 -05:00
Nick Mathewson
9f53a79ddf
Netdoc: use a different desc in tests.
...
This is from Akka, which ahf runs.
2022-11-17 13:25:05 -05:00
Nick Mathewson
8dfbbca4e5
GuardMgr: Log when a guard status changes (significantly).
...
We previously had a trace message on _every_ change. That's fine,
but we also want to log more important changes where the user
can see them. Namely:
* If we go from any other status to Reachable, we want to tell
the user. (We don't want to spam them if it was already
reachable.)
* If we go from Untried or Reachable to Unreachable, we want to
tell the user. (We don't tell them about changes from Retriable
to Unreachable, since that just means that a retry attempt
was not successful.)
Closes #627 .
2022-11-17 12:32:57 -05:00
Nick Mathewson
6c5dd05698
GuardMgr: split Reachable::Unknown into Untried and Retriable
...
There are two cases here, and we will want to log them
differently.
(By removing the "Unknown" variant entirely, we ensure that we
didn't miss any code that formerly checked for Unknown.)
2022-11-17 12:21:06 -05:00
Nick Mathewson
effd53510d
ChanMgr: Log every conection attempt at debug.
2022-11-17 12:01:57 -05:00
Nick Mathewson
95081198e5
Remove impl Display for OwnedCircTarget
...
Nothing used this; if anything wants it, it would be better off
calling `.display_chan_target()`.
2022-11-17 09:12:57 -05:00
Nick Mathewson
25702ccd9e
ChanTarget: Add a display function, with better output.
...
This change lets us display a ChanTarget's members without first
cloning them into an OwnedChanTarget.
It also resolves a reliability issue by outputting better info when
talking about connections via pluggable transports.
Closes #647
2022-11-17 09:06:08 -05:00
Nick Mathewson
cf152c5ed6
linkspec: Make "pt-client" non-experimental.
2022-11-16 12:26:31 -05:00
Nick Mathewson
7d4691e402
chanmgr: rename new_test_channel_map to new_test_state.
2022-11-16 12:07:47 -05:00
Nick Mathewson
b466e24235
chanmgr::mgr::*: misc spelling fixes and normali[sz]ations
2022-11-16 12:05:20 -05:00
Nick Mathewson
53c401af65
Fix up documentation that referred to a ChannelMap.
2022-11-16 12:02:02 -05:00
Nick Mathewson
5804f0f350
ChanMgr: Rename map.rs to state.rs
...
This is another pure renaming.
2022-11-16 11:46:11 -05:00
Nick Mathewson
8271037d37
ChanMgr: Rename ChannelMap to MgrState
...
We're doing this because the type now holds "all the mutable state
in a ChanMgr", not just the map.
This is a pure renaming; no documentation has been updated.
Part of #606 .
2022-11-16 11:32:49 -05:00
Nick Mathewson
76a89fb178
GuardMgr: Add Instant to update().
...
This lets us avoid calling `Instant::now()`, when `Runtime::now()`
is what we want.
Unfortunately, there are a bunch of functions that called `update()`
that needed to change. Fortunately, none of the changes were very
complicated.
Fixes a `TODO pt-client` comment.
2022-11-16 09:56:51 -05:00
Nick Mathewson
fd2253cd44
GuardMgr: Rename "now" arg in update() to "wallclock"
...
I'm about to add an `Instant` argument. By convention, when we have
both, we call the Instant "now".
This commit is a pure renaming.
2022-11-16 09:40:25 -05:00
Nick Mathewson
4a1b3d8954
guardmgr: Remove a now-unneeded "allow(dead_code)"
2022-11-16 09:22:23 -05:00
eta
09b918515c
Merge branch 'ptmgr-config' into 'main'
...
tor-ptmgr: make configuration use builders, plumb into arti-client
See merge request tpo/core/arti!823
2022-11-16 12:12:35 +00:00
Ian Jackson
b46d1600e7
Merge branch 'real_netdoc_pos' into 'main'
...
Replace `Option<Pos>` with `Pos` in `ParseError`.
Closes #640
See merge request tpo/core/arti!859
2022-11-16 11:50:20 +00:00
Ian Jackson
d7dc02968f
pt config, arti cfg test: Expect bridges.transports to be missing
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/823#note_2854365
2022-11-16 11:39:25 +00:00
Ian Jackson
4fe5e8fcaa
arti cfg test: Coalesce expect_missing
...
If there are subkeys which are covered by also expected_missing
superkeys, delete them, since we expect the superkey to be missing, so
the subkey won't show up.
2022-11-16 11:39:25 +00:00
eta
1c9f6fb179
tor-ptmgr: make configuration use builders, plumb into arti-client
...
This brings the draft configuration mechanisms in tor-ptmgr in line with
the config in other crates, using builders. It also plumbs the config
type through into the main `arti-client` config, and adds some example
lines to `arti-example-config.toml`.
2022-11-16 11:39:25 +00:00
Nick Mathewson
7a42cb0e45
Remove a `TODO pt-client` in netdoc.
...
This issue is now torspec!94.
2022-11-15 17:19:26 -05:00
Nick Mathewson
39615516fd
Replace `Option<Pos>` with `Pos` in `ParseError`.
...
We already have `Pos::Unknown` for an error at an unknown
location and `Pos::None` for an error where no location is
sensible. There's no reason to have an additional `Option` here.
Additionally, the use of `Option` gave us a bug where our old
`ParseError::at_pos()` method didn't actually set the position
unless the position was already set. That's not what we want!
Fixes #640 .
Finally, we have to fix a test that was a bit broken because it was
working around #640 .
2022-11-15 16:58:23 -05:00
Nick Mathewson
0378a14014
Merge branch 'fix_bridgeconf_lookup' into 'main'
...
Allow a subset-only ChanMethod match when looking up a BridgeConfig
Closes #642
See merge request tpo/core/arti!858
2022-11-15 19:18:51 +00:00
Ian Jackson
86c7a2da7f
Merge branch 'cfg-doc' into 'main'
...
arti cfg test: Add more documentation
See merge request tpo/core/arti!856
2022-11-15 19:05:12 +00:00
Nick Mathewson
2bd422663e
Resolve a dead-code warning.
2022-11-15 13:53:14 -05:00
Nick Mathewson
d78cde7dea
Allow a subset-only ChanMethod match when looking up a BridgeConfig
...
If we have a bridge guard that is using Direct connection and it
knows multiple addresses, our code to match it with a BridgeConfig
is wrong, because the BridgeConfig has only one address, and our
code looks for an exact match.
Fixes #642 .
2022-11-15 13:53:14 -05:00
Ian Jackson
67242a2986
arti cfg test: Document exhaustive_1 and comment exhaustive
2022-11-15 18:25:39 +00:00
Nick Mathewson
db9440464b
Remove a spurious log that I committed by mistake. Whoops.
2022-11-15 13:15:32 -05:00
eta
5eccaf008b
Merge branch 'fix_parse' into 'main'
...
netdoc: Allow empty lines at the end of router descriptors
Closes #637
See merge request tpo/core/arti!857
2022-11-15 17:41:29 +00:00
Nick Mathewson
050eab9bba
Implement more cases for `DirSpecificTarget`.
...
Without this fix, any attempt to actually use a circuit for a
`DirSpecificTarget` will fail, since supports() will say false, and
`restrict_mut()` will say `NotSupported`.
2022-11-15 11:42:54 -05:00
Nick Mathewson
89be046466
netdoc: Allow empty lines at the end of a router descriptor.
2022-11-15 11:27:43 -05:00
Nick Mathewson
bc7780bffd
tor-netdoc: Add a new ErrorKind for EmptyLine.
...
Empty lines were previously reported as BadKeyword, which is
confusing.
2022-11-15 11:27:43 -05:00
Ian Jackson
46c272e293
arti cfg test: Break out CONFIG_KEYS_EXPECT_NO_EXAMPLE
...
Giving this a name will allow us to refer to it docs in a moment.
2022-11-15 15:38:47 +00:00
Ian Jackson
c7087d3679
arti cfg test: Drop a redundant allow
...
This allow is also present in the standard lint block at the start of
the test inline module.
2022-11-15 15:11:25 +00:00
Ian Jackson
232e82491d
guardmgr: Document that guardmgr only holds a Weak
2022-11-15 14:39:00 +00:00
Ian Jackson
fdeb2db1c2
arti-client: Retain a strong reference to the inner Arc<BridgeDescMgr>
...
Fixes #636 .
2022-11-15 14:36:02 +00:00
Ian Jackson
b7441c9804
bridges: Create and install a BridgeDescMgr when we bootstrap
2022-11-15 12:08:21 +00:00
Ian Jackson
a565e3381f
arti-client: Store a handle to the DirMgrStore in TorClient (fmt)
...
rustfmt only.
2022-11-15 12:08:21 +00:00
Ian Jackson
63c463944d
arti-client: Store a handle to the DirMgrStore in TorClient
...
We'll need this shortly.
2022-11-15 12:08:21 +00:00
Ian Jackson
647610f2f9
arti-client: Store a handle to the guardmgr in TorClient
...
We'll need this shortly.
2022-11-15 12:08:20 +00:00
Nick Mathewson
79a09ae379
Merge branch 'make_bridges_work' into 'main'
...
Bugfix: preserve active_set when loading guards
See merge request tpo/core/arti!848
2022-11-14 19:40:26 +00:00
Nick Mathewson
2f5f066d85
Merge branch 'report_missing_descs' into 'main'
...
GuardMgr: Update desired bridge descs from 'update' function.
Closes #622
See merge request tpo/core/arti!847
2022-11-14 19:15:12 +00:00
Nick Mathewson
ec2e432bee
Preserve active_set when loading guards.
2022-11-14 13:50:59 -05:00
Nick Mathewson
92115aa366
GuardMgr: Update desired bridge descs from 'update' function.
...
There are some new TODOs here for us to think about, but I think
this will give us something to test.
2022-11-14 13:36:10 -05:00
Nick Mathewson
0f4c7a477a
GuardSet: Add a method to report which bridge descs we want.
2022-11-14 13:36:10 -05:00
Ian Jackson
b41becec56
Merge branch 'guardmgr' into 'main'
...
Move guardmgr creation to arti-client, rather than within circmgr
See merge request tpo/core/arti!850
2022-11-14 17:01:31 +00:00
Ian Jackson
58fc19dc8d
Merge branch 'store3' into 'main'
...
dirmgr: Expopse DirMgrStore
See merge request tpo/core/arti!851
2022-11-14 17:01:10 +00:00
Ian Jackson
7efbc600c0
Merge branch 'bdm-dormant' into 'main'
...
bridge descriptor dormancy: Define an enum and semantics
See merge request tpo/core/arti!845
2022-11-14 17:00:40 +00:00
Ian Jackson
ed4006c87c
Move GuardMgr::new call to arti_client::TorClient (fmt)
...
rustfmt only, broken out to ease review.
2022-11-14 15:52:30 +00:00
Ian Jackson
525c452e77
Move GuardMgr::new call to arti_client::TorClient
...
Having this done within circmgr was irregular - most of our other key
buildup functions are done in TorClient::create_inner.
It is also inconvenient, as it buries the guardmgr within the circmgr.
2022-11-14 15:50:07 +00:00
Ian Jackson
92939439a6
dirmgr Store: Have constructors take DirMgrStore
...
Now the Store is constructed by arti_client, solving the problem
described here
https://gitlab.torproject.org/tpo/core/arti/-/issues/631#note_2853665
but in a different way.
2022-11-14 15:48:17 +00:00
Ian Jackson
5e16c55f9e
dirmgr Store: Introduce DirMgrStore and use for BridgeDescMgr (fmt)
...
rustfmt only, broken out to ease review.
2022-11-14 15:48:17 +00:00
Ian Jackson
cf362f9806
dirmgr Store: Introduce DirMgrStore and use for BridgeDescMgr
...
We are going to change DirMgr's constructors to also take a DirMgrStore.
2022-11-14 15:48:17 +00:00
Ian Jackson
d9f231e099
dirmgr Store: Abolish redundant trait impl
2022-11-14 15:47:04 +00:00
Ian Jackson
527ab06376
dirmgr Store: Use `**` syntax and deref to trait objects
...
This will allow us to get rid of a needless trait impl.
2022-11-14 15:47:04 +00:00
Ian Jackson
bf7d45b7b9
dirmgr Store: Move Send and 'static bounds to Store trait
...
This seems tidier to me.
(It saved a lot of typing when I was trying to make some complicated
pub supertrait with sealed private supertrait, but apparently not
now.)
2022-11-14 15:33:58 +00:00
arnabanimesh
91be995588
Fix Windows shortcut target
2022-11-13 16:05:24 +00:00
Ian Jackson
9ecda958a4
Document Clone semantics of GuardMgr and DirMgr
2022-11-11 16:55:56 +00:00
Ian Jackson
9a979cf2c4
cfg-ify an import
2022-11-11 16:54:01 +00:00
Ian Jackson
c6234428e3
bridge descriptor dormancy: Accept the dormancy value
...
But right now, don't do anything with it. That will come in a future MR.
2022-11-11 15:34:35 +00:00
Ian Jackson
eeb6d52678
bridge descriptor dormancy: Add a TODO for this enum
2022-11-11 15:26:42 +00:00
eta
b1cc1e2065
Merge branch 'workaround_545' into 'main'
...
Temporarily disable it_cancels_delayed_firings.
See merge request tpo/core/arti!846
2022-11-11 11:16:33 +00:00
Nick Mathewson
9c9f9bbd25
Merge branch 'guardmgr-todo-misc' into 'main'
...
Resolve most "TODO pt-client" comments in GuardMgr
See merge request tpo/core/arti!840
2022-11-10 17:50:34 +00:00
Nick Mathewson
b91f7d61b3
GuardMgr: Explain why we timestamp BridgeSets as we do.
2022-11-10 12:11:28 -05:00
Nick Mathewson
f5a5e310a8
GuardMgr: Downgrade a pt-client TODO about an internal API
2022-11-10 12:11:28 -05:00
Nick Mathewson
8cf04d2a38
GuardMgr Document why a BridgeSet has trivial weight thresholds.
...
This is the only way I could find in which parameter interpretation
differs between bridge guards and relay guards; with it documented,
I can remove a TODO about identifying such ways.
2022-11-10 12:11:28 -05:00
Nick Mathewson
01def7cf86
GuardMgr: once more, fix our n_primary_dir_info check.
...
Have the check only apply to non-bridge universes, and explain why
in a bunch more comments.
2022-11-10 12:11:28 -05:00
Nick Mathewson
11e83d8069
GuardMgr: remove redundant call to extend_sample_as_needed
...
Previously we would call extend_sample_as_needed in only two places,
one of which called the other unconditionally. That's obviously not
necessary.
I've selected just one of them (`update_guardset_internal`) since it
fits better with the theme if that function. I've added comments
explaining what is going on.
This commit also introduces a yes/no enum for "were any guards added
while extending this set". Formerly we had a boolean, but it got
passed around so many times that I think its intent became obscure.
2022-11-10 12:11:28 -05:00
Nick Mathewson
1d4db04e4e
GuardMgr: rename n_primary_without_dir_info
...
What this function actually does is return the number of primary
guards whose presence (by identity) is ambiguous in a current
universe. The new name and documentation should help avoid
confusion.
The method's old name had led me astray when identifying whether it
should apply to bridges in one case. This commit also removes the
corresponding `TODO pt-client`.
2022-11-10 12:11:28 -05:00
Nick Mathewson
1ad45f164e
Remove TODO to rename for_circuit_usage in favor of #623
2022-11-10 12:11:28 -05:00
Nick Mathewson
b8792307ac
GuardMgr: Remove TODO to move `mod bridge` to another crate
...
The code seems happy enough here for now.
2022-11-10 12:11:28 -05:00
Nick Mathewson
942dfc8487
Resolve todo!()s and TODOs around BridgeRelay::HasAddrs.
...
Also, add a bunch of reminders around these implementations that
`HasAddrs` returns all the address associated with you for GeoIp or
family purposes, even if they are _not_ ones that we should actually
contact you at.
2022-11-10 12:11:28 -05:00
Nick Mathewson
dcfb4d0956
RouterDesc: Add an or_ports method.
2022-11-10 12:11:28 -05:00
Nick Mathewson
71510fbd96
Temporarily disable it_cancels_delayed_firings.
...
This test is timing-dependent in a way that seems to fail on heavily
loaded CI machines. See #545 .
2022-11-10 11:58:35 -05:00
Nick Mathewson
e5c26a123f
Actually, require rsa 0.7.1.
...
rsa 0.7.0 has been yanked.
2022-11-10 11:26:35 -05:00
Nick Mathewson
0a1141db32
tor-persist: use map_while
...
It was introduced in Rust 1.57.
2022-11-10 11:04:20 -05:00
Nick Mathewson
06e4e91614
Remove allow() for a false-positive warn on Rust 1.56.
2022-11-10 11:04:20 -05:00
Nick Mathewson
e19ff0ec21
Upgrade rsa to 0.7. Closes #613 .
2022-11-10 11:04:20 -05:00
Nick Mathewson
34ae02e75f
Upgrade to serde_with 2, phf 0.11. Closes #526 .
2022-11-10 11:04:18 -05:00
Nick Mathewson
2c13a78c57
Upgrade to tinystr 0.7. Closes #591 .
2022-11-10 10:57:33 -05:00
Nick Mathewson
936920b26e
bump rust-version to 1.60 in every crate.
2022-11-10 10:57:33 -05:00
Ian Jackson
eacb5dc2e3
bridge descriptor dormancy: Define an enum and semantics
...
This is part of #630 .
2022-11-10 15:17:36 +00:00
Nick Mathewson
d9788c16b3
Merge branch 'bridge-error' into 'main'
...
Use ErrorKind::TorAccessFailed for misbehaving bridges
See merge request tpo/core/arti!842
2022-11-10 13:50:47 +00:00
Nick Mathewson
3c29dfd99d
Merge branch 'bdm-process-doc-test' into 'main'
...
bridge descs: Add tests for process_document
See merge request tpo/core/arti!841
2022-11-10 13:50:23 +00:00
Nick Mathewson
6454896d95
Merge branch 'bdm-params' into 'main'
...
Remove TODO re BridgeDescDownloadConfig defaults
See merge request tpo/core/arti!839
2022-11-10 13:49:54 +00:00
trinity-1686a
614cf34284
Check more targets
2022-11-10 13:34:17 +00:00
Ian Jackson
42dd5d7746
bridge desc: Drop a done TODO
...
We have a separate BridgeDescMgr, rather than reusing DirMgr, so we
will not be implementing BridgeDescProvider for DirMgr.
2022-11-08 18:54:31 +00:00
Ian Jackson
8fbff3a27f
Use ErrorKind::TorAccessFailed for misbehaving bridges
...
(Use semantic linefeed for the doc comment.)
2022-11-08 18:52:57 +00:00
Ian Jackson
d808f70a13
bridge descs: Add tests for process_document
2022-11-08 18:42:34 +00:00
Ian Jackson
f1f4ca56a8
Remove TODO re BridgeDescDownloadConfig defaults
2022-11-08 17:34:25 +00:00
Ian Jackson
05cad7c0eb
bridge desc: todo re config: weaken and reference a new ticket
2022-11-08 17:34:13 +00:00
Ian Jackson
4f893648b8
Merge branch 'clap-v3' into 'main'
...
Upgrade to clap 3
Closes #616
See merge request tpo/core/arti!830
2022-11-08 17:11:04 +00:00
Nick Mathewson
9dcfc2bb65
GuardMgr: Docs for BridgeDescProvider
2022-11-08 11:35:35 -05:00
Nick Mathewson
91cfd7ea4a
GuardMgr: Remove a TODO pt-client comment.
...
The BridgeSet type does not necessarily need further changes... and
if it gets them, it won't be because of this comment.
2022-11-08 11:35:35 -05:00
Ian Jackson
8efcfb64af
Merge branch 'misc-todo-ptclient' into 'main'
...
Downgrade and/or remove a few misc "TODO pt-client" comments
See merge request tpo/core/arti!838
2022-11-08 16:21:30 +00:00
Nick Mathewson
ec9e9c86e7
Merge branch 'store' into 'main'
...
Persistently cache bridge descriptors
Closes #619
See merge request tpo/core/arti!831
2022-11-08 15:10:21 +00:00
Ian Jackson
46286dddd4
Merge branch 'todo-ptclient-linkspec-1' into 'main'
...
Resolve `TODO pt-client` entries in linkspec
See merge request tpo/core/arti!836
2022-11-08 15:01:02 +00:00
Ian Jackson
ea369e8385
bridge descs: Rename BridgeDescMgr from BridgeDescManager
...
This is more consistent with our naming elsewhere.
Suggested-by: Nick Mathewson <nickm@torproject.org>
2022-11-08 14:40:28 +00:00
eta
53f62eb8be
Merge branch 'store-yak-misc' into 'main'
...
Small misc yaks for bridge descriptor persistence
See merge request tpo/core/arti!828
2022-11-08 14:28:14 +00:00
Nick Mathewson
3bcb85bd59
Merge branch 'guards_as_bridges_part4' into 'main'
...
GuardMgr: Almost finish wiring Bridges in as a guard substitute
See merge request tpo/core/arti!832
2022-11-08 13:48:27 +00:00
Nick Mathewson
6b422b1c4d
circmgr: downgrade TODO pt-client comments
...
These are structure-internal things we can solve later, if ever.
2022-11-08 08:31:59 -05:00
Nick Mathewson
c99976fabc
ChanMgr: downgrade and remove a few TODO-ptclient comments
...
renamings are now #623 . Code movement can happen later.
2022-11-08 08:27:19 -05:00
Ian Jackson
d9d9cdeac9
bridge descs: Apply sensitive() to bridge identity in error log msg
2022-11-08 13:19:42 +00:00
Nick Mathewson
ada3acf6b8
Try to explain exactly what lookup_bridge_circ_target does
2022-11-08 08:10:15 -05:00
Nick Mathewson
0fd41a7faf
GuardMgr: Try to explain what is going on with update()
...
This explanation is slightly complicated by the fact that I think
that one of the calls to update_guardset_internal() is possibly
unnecessary, and that one of the calls that it makes is potentially
ill-advised.
I'm not going to make those changes right now, however, because they
are potentially a little destabilizing.
2022-11-08 08:10:15 -05:00
Nick Mathewson
6591842458
Refactor configured_bridges
...
Now it is an Option, and is set to None if bridges aren't enabled.
This simplifies `replace_bridge_config` a bit, and forces us to
check for `None` in a few more places.
2022-11-08 08:10:15 -05:00
Nick Mathewson
2a5b4d21e3
GuardMgr: Document that providers should only be installed once.
...
Enforce this with assert!() and a documented panics section.
2022-11-08 08:10:15 -05:00
Nick Mathewson
9fda8d17c4
GuardMgr: Fix build with bridge-client disabled.
2022-11-08 08:10:15 -05:00
Nick Mathewson
6bcce19655
GuardMgr: Remove no-longer-relevant `TODO pt-client` comments
...
Also remove a bunch of now-unnecessary `allow(dead_code)`
annotations.
2022-11-08 08:10:15 -05:00
Nick Mathewson
1418ec13a8
GuardMgr: Rename an error variant
2022-11-08 08:10:15 -05:00
Nick Mathewson
3943c6cd1e
GuardMgr: Spelling fixes and normalizations.
2022-11-08 08:10:15 -05:00
Nick Mathewson
3f3d82ee48
GuardMgr: do not use fallbacks when in bridge mode.
2022-11-08 08:10:15 -05:00
Nick Mathewson
5c3bb3d7e1
GuardMgr: When possible, return a FirstHop that can be a CircTarget
...
We do this by checking the FirstHops we're about to return, and when
they correspond to bridges, looking up an appropriate BridgeRelay
in the current BridgeSet (if we can).
2022-11-08 08:10:15 -05:00
Nick Mathewson
25d7924832
GuardMgr: Refactor UniverseRef to contains Arcs.
...
We already _have_ these Arc<>s whenever we construct a UniverseRef,
so there's no real point in using &refs and making these so
hard to construct.
2022-11-08 08:10:15 -05:00
Nick Mathewson
7fa08140cf
GuardMgr: Remove an outdated "Limitations" comment.
...
Found while grepping for NetDir.
2022-11-08 08:10:15 -05:00
Nick Mathewson
e1ef939ebd
GuardMgr: do not block netdir if we are using bridges
...
The `GuardMgr` code has functionality to tell the DirMgr "Hey,
don't switch to the new NetDir yet: we still need more guard
information!" But we never want to do that if we're selecting
bridges, since they don't come from the NetDir.
2022-11-08 08:10:15 -05:00
Nick Mathewson
1a4fbb2c3f
GuardMgr: Add UniverseType to make code more explicit.
...
Instead of duplicating the logic about which guard sample uses which
universe, we explicitly ask it, and then use that universe. This
will avoid trouble if/when we introduce more samples.
2022-11-08 08:10:15 -05:00
Nick Mathewson
d395ae75a5
GuardMgr: Launch a background task to keep the list of bridge
...
descriptors updated as appropriate.
2022-11-08 08:10:15 -05:00
Nick Mathewson
e93ee14270
GuardMgr: Exit keep-netdir-updated task early if GuardMgr disappears.
2022-11-08 08:10:15 -05:00
Nick Mathewson
697a355a21
GuardMgr: Pass correct universe to "Bridges" `GuardSet`.
...
This can probably be done in a simpler way, but for the moment I
would prefer to try to minimize the amount of code I'm changing
here.
2022-11-08 08:10:15 -05:00
Nick Mathewson
f4149cd133
GuardMgr: Change BridgeSet, BridgeRelay to use more references
...
This will match our needs better and help avoid some `Arc<>`s.
It will be especially helpful for avoiding `Arc`s we don't
actually have.
2022-11-08 08:10:15 -05:00
Nick Mathewson
51a98883c8
GuardMgr: Store bridge configuration.
...
I'm using an Arc<[]> here though I think that there's a chance
that a simple Vec<> would suffice. Since it's an internal type,
nothing will break if we change it later.
Also, we now switch into and out of the Bridges guard sample
as needed. However, that selection is not (yet) built from the
list of bridges. That will come soon.
2022-11-08 08:10:15 -05:00
Nick Mathewson
188b9c0f86
GuardMgr: Remove duplicate code in set_filter
2022-11-08 08:10:15 -05:00
Nick Mathewson
04bcf69749
GuardMgr: Clarify intent with update_active_set.
...
Also fix its behavior when using bridges.
2022-11-08 08:10:15 -05:00
Nick Mathewson
ad47b28f2f
GuardMgr: Split `update_internal` into two functions.
...
The first part changes which guard set is active based on based on
the parameters, which always come from a NetDir; the second changes
the contents of the active guard set, based on a Universe.
2022-11-08 08:10:15 -05:00
Nick Mathewson
95a95076a7
Refactor external guardmgr APIs: Stop taking NetDir arguments.
...
These arguments were used only for legacy (testing) purposes; the
tests now use `TestNetDirProvider`. This lets us simplify our
internal logic for passing a `NetDir` to our samples, and prepare
for having a `BridgeSet` to pass there instead.
This is a breaking change to `guardmgr` and `circmgr`.
2022-11-08 08:10:15 -05:00
Nick Mathewson
339bd8bde0
Mock implementation of a NetDirProvider for testing.
...
I'm about to remove the old testing APIs from GurdMgr that took in a
NetDir in each function: adding this will make that possible.
2022-11-08 08:10:15 -05:00
Nick Mathewson
6b94bc5e4c
Add an accessor for the latest BridgeDescList.
2022-11-08 08:10:15 -05:00
Nick Mathewson
faf51702ac
Implement GuardMgr::install_bridge_desc_provider
2022-11-08 08:10:15 -05:00
Nick Mathewson
5cb9e1987e
Require Send+Sync for BridgeDescProvider
...
We require these for NetDirProvider, so this shouldn't be a big reach.
2022-11-08 08:10:11 -05:00
Ian Jackson
93a150229a
sqlite cache: Document reasoning about timestamps
...
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/831#note_2851764
2022-11-08 13:00:51 +00:00
Nick Mathewson
897bac680f
linkspec: Rename "maybe rename this?" TODOs in favor of #623
2022-11-07 12:27:50 -05:00
Nick Mathewson
f5364065f3
PtTargetSettings: Enforce correctness at lower level.
...
This resolves a number of TODOs.
2022-11-07 12:21:22 -05:00
Nick Mathewson
06972f171d
Remove a blank line
2022-11-07 12:19:02 -05:00
Nick Mathewson
bc28793166
Downgrade TODO on chan_method
...
This is not something we need to solve for 1.1.0 (and it might not
need to be solved ever).
2022-11-07 11:49:49 -05:00
Nick Mathewson
d448809e49
Merge branch 'hilev_spelling' into 'main'
...
Spelling fixes and normalizations on some high-level crates
See merge request tpo/core/arti!835
2022-11-07 15:48:06 +00:00
Nick Mathewson
b423a40478
Remove TODO about third ChannelMethod variant.
...
We didn't find a use for this.
2022-11-07 10:39:13 -05:00
Nick Mathewson
e832a90c4b
Remove TODO about inlining PtTargetSettings.
...
Since there are (or soon will be) parsing restrictions on this type,
we don't want to inline it as a simple Vec.
2022-11-07 10:36:20 -05:00