aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-netdir/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* Remove now-unneeded allow(clippy::cognitive_complexity)Jim Newsome2026-07-151-3/+0
|
* add_warning: add reference to arti#2556Jim Newsome2026-07-151-1/+1
|
* Removed unnecessary lintpryty262026-07-151-2/+1
| | | | Removed unnecessary lint
* Remove renaming aliases for MicrodescAndHashIan Jackson2026-06-221-11/+11
|
* tor-netdoc: Break Microdesc up into Microdesc and MicrodescAndHashIan Jackson2026-06-221-1/+1
| | | | | | | | | | | | | The Microdesc type having a copy of the document hash was always weird, and it's weirder now that there's all these parse2 types that don't have it and parse2 derives on Microdesc that don't touch it. Make a new type for the descriptor and its hash. Use deref to arrange that the new type works almost like the old one. Adjust the use lines in the dependencies to temporarily import MicrodescAndHash as Microdesc.
* pick_n_weighted: change variable names for clarityJim Newsome2026-06-171-25/+25
| | | | | | | "iter" wasn't an iterator per se. Changed it to "sampled_items", and renamed other variables to call the items more generically "items" than "relay", since the mixed usage was a little confusing, and the function doesn't really know anything about relays.
* NetDir::pick_n_relays and pick_n_weighted: clarify/fix docs re zero-weight itemsJim Newsome2026-06-171-5/+7
|
* NetDir::pick_n_weighted: fix doc-comment to not refer toJim Newsome2026-06-171-2/+1
|
* Rename NetDir::pick_n_filtered_weighted -> pick_n_weightedJim Newsome2026-06-171-22/+14
|
* pick_n_filtered_weighted: move warnings logs to callerJim Newsome2026-06-171-3/+11
| | | | We have more useful context in the caller, `pick_n_relays`.
* pick_n_filtered_weighted: test and fix for rand 0.10 behaviorJim Newsome2026-06-171-79/+67
| | | | | | | | | | | | | | | | | | This tests our implementation of sampling to ensure the behavior is as-expected. It also updates the implementation so that the tests pass (It was broken when updating to rand 0.10; see https://gitlab.torproject.org/tpo/core/arti/-/work_items/1907#note_3426398). This removes the direct testing of `rand::IndexedRandom::sample_weighted`, since this is now an impplementation detail of `pick_n_filtered_weighted`, which is itself tested. Verified that this fixes the case of sometimes not being able to select a Guard in integration tests. <https://gitlab.torproject.org/tpo/core/chutney/-/work_items/40057#note_3426299> <https://gitlab.torproject.org/tpo/core/arti/-/work_items/1907#note_3408157> <https://gitlab.torproject.org/tpo/core/arti/-/work_items/2209>
* NetDir::pick_n_relays: move implementation to a testable helperJim Newsome2026-06-171-35/+60
|
* cargo fmtJim Newsome2026-06-171-5/+21
|
* Netdir::pick_n_relays: precompute weightsJim Newsome2026-06-171-19/+19
| | | | | This should be a no-op refactor to callers. It's a step towards decoupling the weighting and filtering from the sampling.
* test_zero: fix comment re 0-weight handlingJim Newsome2026-06-171-1/+0
|
* NetDir::pick_relay: update doc-comment re zero-weight handlingJim Newsome2026-06-171-1/+4
|
* maint: Run maint/add_warning to deny string slicesClara Engler2026-06-091-0/+2
| | | | | | | | | | | | This commit executes maint/add_warning with the just added change to deny string slices except in tests. I recommend auditing this by checking out the previous commit followed by running the script yourself and then verifying that the diff is identical to this commit. This commit makes cargo clippy fail. We will add exceptions in the next commit.
* NetDir::pick_relay: preemptively handle empty sequenceJim Newsome2026-05-271-9/+17
| | | | | | | | | | | | The `choose_weighted` behavior given an empty sequence isn't well documented and has changed over time. Handle it ourselves for consistency. Currently, the `choose_weighted` behavior appears to be to return WeightError::InvalidInput. This means the corresponding `is_empty` branch when handling WeightError::InsufficientNonZero was never exercised. (Though may have been with previous versions of the rand crate).
* Upgrade rand crates to 0.10.Wesley Aptekar-Cassels2026-05-121-11/+11
| | | | | | | | | | | When the circ-padding feature is enabled, we use maybenot, which does not yet support rand 0.10. In the meantime, enabling this feature pulls in rand 0.9. This is not ideal, but should be okay as a temporary situation. This also replaces the use of ReseedingRng (which was removed in 0.10) with the reseeding_rng crate. This is somewhat less performant, but it should be okay.
* geoip: Make asn data conditional.Nick Mathewson2026-04-151-1/+1
| | | | | | | | | | | | This abolishes the NetDefn type, and turns DenseRangeDb into a map to one or (optionally!) two types. For the DBs we ship, which don't have asn information, this saves about 2.5 MiB. (It also probably saves a bit more, since the niche optimization didn't apply to NetDefn as it existed before, since it tried to distinguish Some(None,None) from None.)
* geoip: Migrate code to DenseRangeMap.Nick Mathewson2026-04-151-1/+1
| | | | | This required correcting some errors in our previous ersatz geoip databases.
* NetDir::pick_relay: add a little more info to error reportsJim Newsome2026-04-021-1/+6
| | | | In particular to help debug arti#1907
* NetDir::pick_relay: add some trace loggingJim Newsome2026-04-021-1/+6
|
* Fix word duplicate typosTobias Stoeckmann2026-03-151-1/+1
|
* Allow clippy::collapsible_if to triggerGabriela Moldovan2026-02-161-0/+1
| | | | | | | | | `clippy::collapsible_if` started triggering after bumping the MSRV to 1.88. Since this triggers from a lot of places, and since there even are a couple of instances where we explicitly allow `clippy::collapsible_ifs`, I've opened #2342 for deciding what to do about it.
* maint/add_warning: Run script to add new warningGabriela Moldovan2026-01-271-0/+1
| | | | This adds the lint to all our crates.
* Merge branch 'ticket1223' into 'main'Nick Mathewson2025-12-041-1/+51
|\ | | | | | | | | | | | | Refactor common code that builds circtargets for HS. Closes #1223 See merge request tpo/core/arti!3530
| * Refactor common code that builds circtargets for HS.Nick Mathewson2025-12-041-1/+51
| | | | | | | | | | | | | | | | | | This code was duplicated across hsclient and hsservice. Logically, it belongs in netdir, since that's where we have the latest required-protocol information, and the ability to look up relays by IDs. Closes #1223
* | Remove unnecessary `doc(cfg(...))` attributesNeel Chauhan2025-12-041-3/+0
|/ | | | | | | | | Fixes part of #2193. (Edits from nickm: I selected the cases here that I could verify were correct from immediate context.) Edited-by: Nick Mathewson <[email protected]>
* RelayFlags: Use RelayFlag enum variant names everywhereIan Jackson2025-11-181-1/+1
| | | | | | | Abolish the constants with the transitional names. This also abolishes the controversial name `H_S_DIR`, which Rust case transformation rules generated from `HSDir`.
* RelayFlags: Use the singular RelayFlag for naming individual flagsIan Jackson2025-11-181-2/+2
| | | | | | | | | | | | | | We're going to separate RelayFlag from RelayFlags. We could continue to provide a bunch of constant values for RelayFlags, for each individual type, but that would involve an ad-hoc derive, and would still be a bit of an unusual API. Instead, we're going to make ``RelayFlag` a normal enum. In this commit, we change everyone to refer to it by its singular name. Hopefully separating out this bulk change makes both this, and the core commit, easier to review.
* tor-netdoc: Remove the RelayFlags type alias in netstatusIan Jackson2025-11-181-1/+1
| | | | I would do `#[deprecated]` but empirically that has no effect...
* Fix name of clippy lint to unchecked_time_subtraction (2)Ian Jackson2025-11-061-2/+2
| | | | Run maint/add_warning
* tor-netdoc: RouterStatus: unify `orport_addrs` and `addrs` methodsIan Jackson2025-10-061-2/+2
| | | | | | | We had two functions with different return types but identical semantics. Replace them with one function returning `impl Iterator`. Make it return owned addresses. These are small.
* tor-linkspec: Change HasAddrs::addrs to return an IteratorIan Jackson2025-10-061-4/+3
| | | | | | | | This will let us model the actual structure of routerstatus entries in netdocs more closely. They don't have the addresses in a single list. When this code was written this would have been much more awkward, but now we have RPITIT.
* Remove "doc_auto_cfg" incantation from all crates.Nick Mathewson2025-09-291-1/+1
| | | | This feature has been removed from nightly, in favor of doc_cfg.
* tor-netdir: Removed dependency on `static_assertions`hashcatHitman2025-09-011-2/+1
| | | | | | | | Replaced use of [`static_assertions::const_assert`] with the newly available "assert in const" pattern. This completely removes the dependency on `static_assertions` for `tor-netdir`. Signed-off-by: hashcatHitman <[email protected]>
* tor-netdoc: Combine ConsensusRouterStatus and GenericRouterStatusIan Jackson2025-08-261-10/+10
| | | | Now we only need one type.
* tor-netdoc: Abolish RouterStatus trait in favour of generic methodsIan Jackson2025-08-261-2/+2
| | | | | Our approach to sharing code between md and plain consensuses is now the new "variety" system, not generics.
* Fix warnings and errors from edition 2024.Nick Mathewson2025-08-071-28/+20
| | | | | | | | | | The two main causes of errors were: - Since some of the lifetime rules have changed, we no longer need to do as many "bind a variable and immediately return it" patterns, and so clippy now warns about them. - We needed to adjust the explicit captures (`use<...>`) in a couple of our RPIT instances.
* Switch Cargo.toml files to edition 2024.Nick Mathewson2025-08-071-13/+17
| | | | | | | | | | | | | | First, run ``` git grep -l "^edition =" | xargs perl -i -pe 's/^edition *=.*/edition = "2024"/;' ``` Second, manually verify that all Cargo.toml files have changed, and nothing else has changed. Third, run cargo fmt again.
* Fix errors from rustdoc nightly.Nick Mathewson2025-08-051-1/+1
|
* Typo fixes (automatic and hand-verified)Nick Mathewson2025-07-091-1/+1
| | | | Made with https://crates.io/crates/typos-cli
* Temporarily suppress mismatched_lifetime_syntaxes.Gabriela Moldovan2025-07-071-0/+1
| | | | See #2060.
* proto: Move NegotiatedHopSettings to a higher levelNick Mathewson2025-06-101-0/+10
| | | | | | We will construct this object based on the circuit parameters _and_ on the target's supported protocol versions, so we need to do so when we have both pieces of info.
* NetDir::pick_n_relays: avoid some unwarranted warningsJim Newsome2025-06-051-3/+4
| | | | | | | | | | | | | | | | Previously we logged a warning whenever `choose_multiple_weighted` returns `Ok(iter)`, whenever `iter` contains fewer relays than requested. However, this is expected behavior of `choose_multiple_weighted` if the filtered list of relays doesn't have the requested number of relays, in which case it should return all of the relays in the filtered list. In particular, this condition occurs regularly in test networks when looking for candidate relays to add to the potential guard set while excluding those already in the potential guard set. We still warn if the returned list is fewer than requested, *and* fewer than available in the filtered list.
* tor-netdir: Warn on one more case of insufficient itemsNick Mathewson2025-04-291-1/+12
| | | | | | Now that choose_multiple_weighted can once more return fewer items than requested, we should warn when it does so, to be consistent with our other cases of warning about #1907.
* tor-netdir: test for rand 0.9.1 behavior instead of 0.9.0Nick Mathewson2025-04-291-3/+9
| | | | | | | | Rand 0.9.1 reverted the changes that caused #1903, in https://github.com/rust-random/rand/pull/1623. This broke our test that made sure that rand wasn't going to change their behavior _again_ :)
* Rename recommended_protocols to protocol_statuses.Nick Mathewson2025-04-161-3/+3
| | | | | This name reflects its purpose better than the original one, since it includes required protocols as well as recommended ones.
* netdir: Add a recommended_protocols() to NetDirProviderNick Mathewson2025-04-161-0/+10
|