Nick Mathewson
99effeb532
Merge branch 'sync_guard_api'
2021-10-10 12:15:05 -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
a5bfc3c963
Remove some planned items in add_warnings.
2021-10-09 16:52:54 -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
6230e1e2a6
Small edits on Android.md
2021-10-08 09:50:02 -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
Trinity Pointard
9c275a04ee
update ctrlc and der
...
ctrlc had rustsec issues, der was yanked
2021-10-06 23:55:08 +02:00
Neel Chauhan
2e4f5e2d10
Formatting fixes
2021-10-06 12:32:17 -07:00
Neel Chauhan
31cf7e4d56
Make is_valid_hostname() global
2021-10-06 12:32:17 -07:00
Neel Chauhan
0e98e4a033
Add unit tests for hostnames
2021-10-06 12:32:17 -07:00
Neel Chauhan
e76988738a
Introduce ClientConfig for is_localhost config parameter
2021-10-06 12:32:17 -07:00
Neel Chauhan
f4caae3569
Hostname corrections and add IPv6 hostname validation support
2021-10-06 12:32:17 -07:00
Neel Chauhan
0edafc76fa
Reject bad hostnames and internal addresses in Arti
2021-10-06 12:32:17 -07:00
Nick Mathewson
150270f904
Update cargo.lock again.
2021-10-05 08:21:34 -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
Nick Mathewson
0c0a057bef
In CI, *temporarily* ignore RUSTSEC-2021-0119 in nix crate.
...
The affected API (getgrouplist) isn't one that we use, directly or
transitively. We can't just upgrade immediately, since the ctrlc
crate is currently stuck on the older version of nix.
2021-10-01 09:24:38 -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