Commit Graph

1163 Commits

Author SHA1 Message Date
Ian Jackson 8aea5c9e43 Move ArtiConfig to new arti::cfg module
Code motion and import fixups.
2022-03-21 11:42:33 +00:00
Nick Mathewson ff05ed61d7 Merge branch 'accessors' into 'main'
Abolish some accessors in drmgr

See merge request tpo/core/arti!423
2022-03-18 21:14:14 +00:00
Ian Jackson d651a894de dirmgr: Authority: Abolish v3ident accessor
This makes this information crate-private.  The crate can reasonably
just access it.
2022-03-18 16:49:25 -04:00
Ian Jackson d1a9ed62f7 dirmgr: Authority: Move a method used only for testing 2022-03-18 16:49:25 -04:00
Ian Jackson 23cac566e1 dirmgr: Authority: Abolish two unused accessors 2022-03-18 16:49:25 -04:00
Ian Jackson 9c5480480a dirmgr: NetworkConfig: Abolish accessors
Using accessors for crate-only fields is otiose.
2022-03-18 16:49:25 -04:00
Ian Jackson a6d4109414 dirmgr: NetworkConfig: Rename fallbacks struct field
Rename this to be named the same as its accessor, and use the rename
feature of builder and serde.  (The shorter name is nicer in the code
IMO.)
2022-03-18 16:49:25 -04:00
Ian Jackson 5a2f1b89f3 Actually throw an anyhow
Prompted by a compiler warning which I weirdly can't seem to reproduce?
2022-03-18 15:52:28 +00:00
Ian Jackson 981e6d7f01 Merge branch 'circ_path_api' into 'main'
ClientCirc: add functions to return the circuit's actual path

Closes #415

See merge request tpo/core/arti!419
2022-03-18 12:38:29 +00:00
Nick Mathewson 9b7663b4ba Merge branch 'md_allocation' into 'main'
Use less space in hashtables for microdescriptors

Closes #386

See merge request tpo/core/arti!415
2022-03-17 16:45:38 +00:00
Nick Mathewson d39557b851 Define accessors for circuit hops.
Closes #415
2022-03-17 12:36:57 -04:00
Ian Jackson 0c0133dcc6 Run rustfmt 2022-03-17 16:22:15 +00:00
Nick Mathewson 764930b9cd tor-proto: Remember peer information in circuit and channel
Each channel now remembers an OwnedChanTarget.

Each circuit now remembers a vector of OwnedChanTarget to represent
the path that it was constructed for.

Part of #415.
2022-03-17 12:03:34 -04:00
Ian Jackson 955e3a3e40 GetMicrodescsState: Abolish separate n_missing field in 2022-03-17 15:49:31 +00:00
Ian Jackson 3a1e599d5a GetMicrodescsState: Break out with_mdreceiver_for_missing 2022-03-17 15:49:29 +00:00
Ian Jackson 1c6f4aaa9b GetMicrodescsState: Dedupe slightly 2022-03-17 15:29:10 +00:00
Nick Mathewson 567995a7ca ClientCirc: Move n_hops into a new Path type.
This will help with #415
2022-03-17 10:34:06 -04:00
Nick Mathewson 85a20ae4ec Alternative API for set_isolation_group().
Instead of requiring a `Box<dyn Isolation>`, it now takes either a
`Box<dyn Isolation>`, or an arbitrary `T` that implements
`Isolation`.

This API still allows the user to pass in a `Box<dyn Isolation>` if
that's what they have, but it doesn't require them to Box the
isolation on their own.

Part of #414.
2022-03-17 09:07:08 -04:00
Nick Mathewson 2818a3cb35 Merge branch 'test-isolation' into 'main'
new api for isolation

See merge request tpo/core/arti!377
2022-03-17 12:46:13 +00:00
Ian Jackson 40bede587c Merge branch 'config-partials-transparent' into 'main'
Absolish builders for CircMgrConfig and DirMgrConfig

See merge request tpo/core/arti!417
2022-03-17 12:30:46 +00:00
eta dd967e66b9 Merge branch 'always-ims' into 'main'
dirmgr: Always send if-modified-since on consensus documents.

Closes #403

See merge request tpo/core/arti!412
2022-03-16 21:32:48 +00:00
trinity-1686a 575792b583 replace TODOs with documentation 2022-03-16 20:33:36 +01:00
Ian Jackson a020f82de2 DirMgrConfig: abolish builder; make it transparent and exhaustive
See rationale in the comment.
2022-03-16 19:31:10 +00:00
Ian Jackson ab352881e3 Add rationale for CircMgrConfig transparency and trait 2022-03-16 19:31:08 +00:00
Ian Jackson 82aa4b902a Provide define_accessor_trait and use it to generate CircMgrConfig 2022-03-16 19:31:05 +00:00
Ian Jackson 8bde40fdd3 Make CircMgrConfig transparent (and make it a trait)
See commentary for the rationale.
2022-03-16 19:30:59 +00:00
Ian Jackson 8d54c0f073 Change type of TorClientConfig::override_net_params
Now we use NetParams.  That implies making its constructor public,
which I think it fine.

This is related to #413 but is far from completing that ticket.
2022-03-16 19:30:59 +00:00
Ian Jackson d0c71b3872 Actually honour preemptive circuits configuration
This handwritten conversion function omitted a field.  There was
nothing to spot this mistake.

IMO this shows why these particular types ought not to use builders,
but instead, should cause API breaks when things change.

Adding this line here to explicitly fix the bug, although we are about
to abolish this function completely almost right away.
2022-03-16 19:22:13 +00:00
trinity-1686a 8a2b8eb9b8 add isolation to dns requests 2022-03-16 19:50:24 +01:00
Dimitris Apostolou 7353fd4397
Fix typo 2022-03-16 20:25:46 +02:00
trinity-1686a 7c606048f2 accept boxed isolation in StreamPref::set_isolation_group 2022-03-16 19:24:23 +01:00
trinity-1686a 4eb90b72c0 add trait to help test isolation related code 2022-03-16 19:24:23 +01:00
trinity-1686a 0b7c71a888 add tests on Isolation and fix conditional compilation issues
it seems I added conditional compilation without noticing it??
and there was some errors when choosing a prefered runtime depending on
feature flags
2022-03-16 19:24:23 +01:00
trinity-1686a 59bef598a3 replace IsolationMap with new Isolation trait 2022-03-16 19:24:23 +01:00
trinity-1686a 698132a762 refactor restrict_mut 2022-03-16 19:24:23 +01:00
trinity-1686a cb00ac677b replace Arc with Box and use dyn-clone
this also removes JoinResult
2022-03-16 19:24:23 +01:00
trinity-1686a 43abd119cf replace result with either 2022-03-16 19:24:23 +01:00
trinity-1686a ec7737b322 add some documentation for new traits 2022-03-16 19:24:23 +01:00
trinity-1686a 778d6f3380 replace isolated with compatible
the inverted logic was too easy to mess up
2022-03-16 19:24:23 +01:00
trinity-1686a 4826d757ac use downcast-rs instead of our own AsAny 2022-03-16 19:24:19 +01:00
trinity-1686a 234291f666 fix existing tests 2022-03-16 19:23:21 +01:00
trinity-1686a b3b27c9bd3 add a join() on Isolation 2022-03-16 19:23:21 +01:00
Trinity Pointard a1b8b4999f testing new api for isolation 2022-03-16 19:23:21 +01:00
Ian Jackson fb4111f524 Merge branch 'derive-builder' into 'main'
derive_builder: Switch to upstream 0.11

See merge request tpo/core/arti!414
2022-03-16 17:54:53 +00:00
Ian Jackson da787d074a derive_builder: Switch to upstream 0.11
This has the different syntax for builder field attributes than what I
originally proposed in my MR, and which therefore is in the pinned
branch.

My upstream MR for the field attributes feature was morged:
  https://github.com/colin-kiegel/rust-derive-builder/issues/239
2022-03-16 16:34:44 +00:00
Nick Mathewson c3e74973b4 netdir: Use an even smaller rep for list of microdescs
Every time we want a microdescriptor, we know the index of that
microdesc's corresponding routerstatus within the consensus.
Therefore, we can use that index to store `Arc<Microdesc>`s in a
dense array, and not have to use a HashSet here at all.
2022-03-16 11:52:47 -04:00
Ian Jackson 644f962cfd Merge branch 'move-retry-delay' into 'main'
Move RetryDelay into tor-basic-utils

See merge request tpo/core/arti!411
2022-03-16 15:37:44 +00:00
Nick Mathewson 76df9e4014 tor-dirmgr: Remove redundant hashtable.
We were using a hashtable to keep track of missing microdescriptor
digests.  But this information is redundant with the NetDir state,
and there's now no longer any performance benefit to keeping a
separate copy.

Part of #386.
2022-03-16 11:33:19 -04:00
Nick Mathewson 233613cd79 NetDir: Use less space in hash tables
We previously kept missing-MD entries and present-MD entries all in
the same HashSet, which resulted in using more slack space than we
need.  Now we use separate tables, so we can drop missing-MD
entries as we move forward.

Also, when constructing a NetDir, set its hash tables to their final
capacities.

This also lets us simplify some of our missing-md-listing code a
lot.
2022-03-16 11:12:15 -04:00
Nick Mathewson 09f750c2c8 RetryDelay: remove accessors.
Instead, check initial_delay in dirmgr directly.
2022-03-16 10:50:13 -04:00