Nick Mathewson
19038ae39a
Add a function to look up a Relay by ChanTarget.
2021-10-11 15:21:46 -04:00
Nick Mathewson
34b576a815
Integrate GuardUsability and GuardMonitor into CircuitBuilder.
...
(When we're building a path with a guard, we need to tell the guard
manager whether the path succeeded, and we need to wait to hear
whether the guard is usable.)
2021-10-10 13:48:58 -04:00
Nick Mathewson
33ba697b5d
Notify guard manager on network change and state flush.
2021-10-10 12:38:50 -04:00
Nick Mathewson
c41dd01a14
Add a GuardMgr member to CircuitBuilder
2021-10-10 12:24:48 -04:00
Nick Mathewson
91cca2183e
Change the GuardMgr APIs to no longer be async.
2021-10-10 12:14:33 -04:00
Nick Mathewson
34c10feae4
Use an mpsc::unbounded() channel in GuardMgr.
...
The advantage here is that we no longer have to use a futures-aware
Mutex, or a blocking send operation, and therefore can simplify a
bunch of the GuardMgr APIs to no longer be async. That'll avoid
having to propagate the asyncness up the stack.
The disadvantage is that unbounded channels are just that: nothing
in the channel prevents us from overfilling it. Fortunately, the
process that consumes from the channel shouldn't block much, and
the channel only gets filled when we're planning a circuit path.
2021-10-10 12:08:31 -04:00
Nick Mathewson
dcca0ec366
Require up-to-date x25519-dalek, async_executors, and argh.
...
I tried using -Z minimal-versions to downgrade all first-level
dependencies to their oldest permitted versions, and found that we
were apparently depending on newer features of all three crates.
I'm kind of surprised there were only three.
2021-10-09 19:37:08 -04:00
Nick Mathewson
58da76c6c4
Lock down some dirmgr config functions.
2021-10-09 17:30:06 -04:00
Nick Mathewson
58355d7d54
Re-export configuration types from tor-client.
2021-10-09 17:30:06 -04:00
Nick Mathewson
af7c9d5a0b
enable checked_conversions lint.
2021-10-09 16:53:13 -04:00
Nick Mathewson
2fa6f5dbb0
Normalize tor-guardmgr warnings
2021-10-09 16:17:54 -04:00
Nick Mathewson
a0bcec5863
Note a possible heisenbug in a unit test.
2021-10-08 10:03:38 -04:00
Nick Mathewson
4a7c563b79
Fix some typos (via the "typos" tool)
2021-10-08 09:42:54 -04:00
Nick Mathewson
aed9572c03
Add a few tracing calls to tor-guardmgr.
2021-10-08 09:14:36 -04:00
Nick Mathewson
29112e0729
Update the tor-guardmgr README.md.
2021-10-07 15:36:26 -04:00
Nick Mathewson
0ff56a3138
Resolve small issues and XXXX/TODO comments in GuardMgr.
...
By the time I merge this, most of the comments should have tickets
to go with them.
2021-10-07 14:03:21 -04:00
Nick Mathewson
00acc5c5b8
Tests for top-level GuardMgr.
...
Also, refactor our message handling to be more like the tor_proto
reactors. The previous code had a bug where, once the stream of
events was exhausted, we wouldn't actually get any more
notifications.
2021-10-07 12:09:29 -04:00
Nick Mathewson
7ef33b7afa
Tests for tor_guardmgr::sample.
2021-10-07 10:45:42 -04:00
Nick Mathewson
0710fb2102
Initial tests for tor_guardmgr::guard
2021-10-07 10:45:42 -04:00
Nick Mathewson
6cdce3dee6
Implement persistent state for guard mgr
2021-10-07 10:45:42 -04:00
Nick Mathewson
0779923d64
Initial backend implementation for guard node manager.
...
There are some missing parts here (like persistence and tests)
and some incorrect parts (I am 90% sure that the "exploratory
circuit" flag is bogus). Also it is not integrated with the circuit
manager code.
2021-10-07 10:45:42 -04:00
Nick Mathewson
520396bd2d
Update total_weight to use UncheckedRelay.
2021-10-07 09:30:08 -04:00
Nick Mathewson
2b0ecec041
Make UncheckedRelay public in tor-netdir.
...
This will let us provide a couple of better APIs for use in tor-guardmgr
2021-10-07 09:30:08 -04:00
Nick Mathewson
565b396b86
Add From<u64> for RelayWeight.
2021-10-07 09:30:08 -04:00
Nick Mathewson
7e68883a27
Change tor-persist to use json instead of toml.
...
The limitations with toml seemed to be reaching a head, and I wasn't
able to refactor the guardmgr code enough to actually have its state
be serializable as toml. Json's limitations are much narrower.
2021-10-07 09:30:08 -04:00
Nick Mathewson
6c6785c04d
Fix a type inference complaint in tor-dirmgr's tests.
...
I have no idea why this just turned up now.
2021-10-07 09:30:08 -04:00
Nick Mathewson
7bdb6e7633
Update cargo.lock; upgrade to newer rusqlite.
2021-10-05 08:10:04 -04:00
Nick Mathewson
10bedd925c
Use subtle and some refactoring to remove branches in ntor
...
Closes #163
2021-10-01 12:27:24 -04:00
Nick Mathewson
1d64e88d67
Implement ConstantTimeEq for key ids.
2021-10-01 10:53:18 -04:00
Jani Monoses
f7e114c833
Allow building tor-persist for WASM
2021-10-01 14:22:31 +03:00
Nick Mathewson
83b03a20a3
Clarify why we use a dyn pointer for StorageHandle.
2021-09-30 15:36:11 -04:00
Nick Mathewson
f1d6779218
Use StorageHandle in tor_circmgr.
2021-09-30 15:36:11 -04:00
Nick Mathewson
37bec4997d
remote unused tor-persist/src/config.rs
2021-09-30 15:36:11 -04:00
Nick Mathewson
37040d06d1
Add tests for tor-persist object-safe wrapper.
2021-09-30 15:36:11 -04:00
Nick Mathewson
fa9e64e27b
tor-persist: Add a testing-only state manager that doesn't use disk
2021-09-30 15:36:11 -04:00
Nick Mathewson
eef06efea6
Move FsStatemgr to an inner module.
2021-09-30 15:36:11 -04:00
Nick Mathewson
f3d29b5006
Add an object-safe wrapper for StateMgr.
...
This is an attempt to uplift the trick that tor-circgmr is currently
using, since we'll want it in tor-guardmgr too.
2021-09-30 15:36:11 -04:00
Nick Mathewson
ed44d7d968
Ensure pick_n_relays returns relays in random order.
...
(Also, fix a test)
2021-09-29 13:49:07 -04:00
Nick Mathewson
932924b733
tor-netdir: Add RelayWeight type and accessors.
...
I'm not thrilled with this code, but I think it's needed to
implement guards correctly.
2021-09-29 13:49:07 -04:00
Nick Mathewson
9114a9ed6e
tor_netdir::testnet: Correct a documentation error.
2021-09-29 13:49:07 -04:00
Nick Mathewson
d6e5d1b5a1
tor-netdir: Add some accessor that guardmgr will need.
...
We'll need `id_pair_is_listed()` to track whether a sampled guard is
(or is not) listed in the consensus.
We'll need `missing_descriptor_for` to see whether we've downloaded
enough microdescs to use a consensus.
2021-09-29 13:49:07 -04:00
Nick Mathewson
d78b25f2b0
Typo fix in comment.
2021-09-29 13:49:07 -04:00
Trinity Pointard
954395573a
update fslock to compile android
2021-09-25 12:01:45 +02:00
Nick Mathewson
b51e2ff5b3
Upgrade memmap2, directories, and dirs dependencies.
2021-09-23 08:26:29 -04:00
Daniel Eades
9a3b183679
remove unused dep
2021-09-19 09:47:57 +01:00
Jani Monoses
5f1f239d51
Enable js feature for getrandom for WASM.
...
By default rand does not build for WASM browser targets.
2021-09-17 06:43:02 +03:00
Jani Monoses
08c9edfc54
Stop using anyhow in tor-dirclient.
2021-09-16 14:27:04 -04:00
Nick Mathewson
039601f179
tor-netdir: Add a by_id_pair() function to look up a relay by both IDs.
2021-09-16 10:19:35 -04:00
Jani Monoses
b0bb7bd100
Do not use set_ prefix on derive_builder setters
2021-09-16 08:41:04 +03:00
Daniel Eades
27cca71978
derive 'Default' where possible
2021-09-11 20:02:33 +01:00