summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * guard sample: Change semantics of `contains` to handle ambiguity.Nick Mathewson2022-10-252-10/+33
| | | | | | | | | | | | | | | | | | This is necessary for the (somewhat undesirable) lookup_ids function to return an ID that the dirmgr can actually use to report successes and failures. As noted, lookup_ids will create problems down the road when we implement relays. We should refactor it out before then.
| * Replace contains_relay with can_add_relay().Nick Mathewson2022-10-251-9/+6
| | | | | | | | | | | | To see if we can add a relay as a guard, we need a conservative test: any IDs in common with the given relay prevent us from adding it.
| * Convert guard samples to use ByRelayIds.Nick Mathewson2022-10-253-124/+193
| | | | | | | | | | | | | | | | | | | | | | | | This required a number of changes, which I've tried to document. I've taken a conservative approach to modification, and I'm not using any of the by_*_mut() functions (yet). For cases which potentially modify the whole set, I'm using into_values() and collect() to ensure that it's re-indexed correctly, even though the identities don't change. I introduce some "TODO pt-client" comments here which I will resolve in the next commit(s).
| * impl HasRelayIds for GuardId.Nick Mathewson2022-10-251-0/+9
| |
| * ByRelayIds: Add additional accessor functions.Nick Mathewson2022-10-251-0/+51
| | | | | | | | | | These are the ones that turned out to be necessary while converting guard samples to use ByRelayIds.
| * linkspec: add HasRelayIds::has_any_identity.Nick Mathewson2022-10-251-1/+6
| |
* | tor-dirmgr: impl Default for FlagPublisherIan Jackson2022-10-271-0/+6
| |
* | tor-dirmgr: impl FlagEvent for BridgeDescEventIan Jackson2022-10-271-0/+6
| |
* | BridgeDescProvider: Make BridgeDescEvent repr(u16) and derive traitsIan Jackson2022-10-272-1/+7
| | | | | | | | This will enable us to impl FlagEvent for it.
* | impl Hash for BridgeConfig and various PT informationIan Jackson2022-10-272-4/+4
| | | | | | | | | | The bridge descriptor manager wants to index data structures by the BridgeConfig.
* | tor-guardmgr: bridges: export BridgeDescError at toplevelIan Jackson2022-10-271-1/+1
| |
* | Merge branch 'fuzz_ptmgr_ipc' into 'main'eta2022-10-273-0/+36
|\ \ | | | | | | | | | | | | ptmgr: Add a fuzzer for ptmessage. See merge request tpo/core/arti!814
| * | ptmgr: Add a fuzzer for ptmessage.Nick Mathewson2022-10-263-0/+36
| | |
* | | Merge branch 'simpler_quote_skipping' into 'main'eta2022-10-271-10/+5
|\ \ \ | | | | | | | | | | | | | | | | ptmgr::ipc: Try an alternate approach to initial quotes. See merge request tpo/core/arti!813
| * | | ptmgr::ipc: Try an alternate approach to initial quotes.Nick Mathewson2022-10-261-10/+5
| |/ / | | | | | | | | | This lets us use `chars()` rather than `char_indices()`.
* | | tor-basic-utils: Provide an implementation of BinaryHeap::retainIan Jackson2022-10-272-0/+23
| | | | | | | | | | | | | | | | | | This is currently nightly-only and is blocked on an unresolved API question: https://github.com/rust-lang/rust/issues/71503
* | | tor-checkable: Make TimerangeBound::dangerously* non-experimentalIan Jackson2022-10-272-10/+1
| | | | | | | | | | | | | | | I want one of these for the bridge descriptor downloader, and they seem reasonable to me.
* | | Merge branch 'assert_maxlen' into 'main'Nick Mathewson2022-10-271-1/+2
|\ \ \ | |/ / |/| | | | | | | | tor-cell: Assert data length in Data cells See merge request tpo/core/arti!800
| * | tor-cell: Assert data length in Data cellsEmil Engler2022-10-241-1/+2
| | | | | | | | | | | | | | | | | | This commit adds a `debug_assert!` macro into the `new_unchecked()` function of the Data cell. Beside this, it also fixes a misleading comment regarding that limit.
* | | Merge branch 'dirclient-yaks' into 'main'Nick Mathewson2022-10-264-1/+57
|\ \ \ | | | | | | | | | | | | | | | | Misc minor changes to tor-dirclient, for descriptor downloading See merge request tpo/core/arti!810
| * | | tor-dirclient: impl HasKind for RequestFailedErrorIan Jackson2022-10-251-1/+7
| | | |
| * | | tor-dirclient: Promise that download only gives RequestFailedIan Jackson2022-10-251-0/+4
| | | |
| * | | tor-dirclient::DirResponse: provide output_stringIan Jackson2022-10-251-0/+17
| | | | | | | | | | | | | | | | This gives callers a nice error type with source and everything.
| * | | tor-dirclient: Provide RoutersOwnDescRequestIan Jackson2022-10-251-0/+29
| | | | | | | | | | | | | | | | This will be used for bridges' descriptors.
* | | | tor-ptmgr/ipc: First cut of pluggable transport spawningeta2022-10-265-1/+963
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new `ipc` module inside `tor-ptmgr` implements the Pluggable Transport Specification version 1 (`pt-spec.txt`, https://gitlab.torproject.org/tpo/core/torspec/-/blob/main/pt-spec.txt). This enables module users to spawn pluggable transport binaries inside a child process asynchronously, and receive structured information about how to connect to the transports provided by said binaries. Internally, this is structured as a pure set of serialisers and deserialisers for the protocol in the specification (in the form of environment variables, and the PT's stdout), a wrapper to run the PT binary and enable accessing its output asynchronously, and a user-facing wrapper that handles ensuring all the requested transports launched properly. The included `run-pt` example is an exceedingly minimal wrapper program that was useful in testing. More tests can and should be added in a further MR. closes arti#394; part of arti#69
* | | | Merge branch 'redundant_allocation' into 'main'Ian Jackson2022-10-261-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-bytes: Avoid redundant allocation See merge request tpo/core/arti!806
| * | | | tor-bytes: Avoid redundant allocationEmil Engler2022-10-251-1/+1
| | |_|/ | |/| | | | | | | | | | See c489e1d9118edd842f80b76a636037524a45ee45
* | | | Merge branch 'flag-event' into 'main'Ian Jackson2022-10-256-16/+78
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | FlagEvent trait: Implement using macros See merge request tpo/core/arti!804
| * | | Fix clippy false positiveIan Jackson2022-10-251-0/+5
| | | |
| * | | FlagEvent trait: Implement using macrosIan Jackson2022-10-256-16/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The explicit list of variant names, that needs to be kept in sync, and is a test failure semver break hazard, is now gone. All the necessary code is now generated automatically, and cannot be wrong. I want this because I find myself wanting to add a second implementation of FlagEvent, for another type.
* | | | BridgeDescEvent: Change the sole variant to SomethingChangedIan Jackson2022-10-251-5/+17
| |/ / |/| | | | | | | | And explain what this all means.
* | | Merge branch 'safe_u16_conversion' into 'main'Nick Mathewson2022-10-251-1/+1
|\ \ \ | | | | | | | | | | | | | | | | tor-cell: Consistent and secure conversion to u16 See merge request tpo/core/arti!803
| * | | tor-cell: Consistent and secure conversion to u16Emil Engler2022-10-241-1/+1
| | |/ | |/| | | | | | | | | | | | | | | | This commit improves the overflow protection of one call to Vec::write_u16(), by replacing the cast conversion from self.sig.len() with a call to u16::try_from(), like it is already done in the rest of the accompanying function.
* | | Merge branch 'rename_for_to_from' into 'main'Nick Mathewson2022-10-253-9/+9
|\ \ \ | | | | | | | | | | | | | | | | tor-cell: Rename for_client and for_relay See merge request tpo/core/arti!793
| * | | tor-cell: Rename for_client and for_relayEmil Engler2022-10-213-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit renames the for_client and for_relay functions to from_client and from_relay respectively, in order to indicate their origin, as the term "for" is more likely to indicate a destination, which is not true in that situation.
* | | | Merge branch 'feat/add-semvermd-tor-cell' into 'main'Nick Mathewson2022-10-251-0/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | Add semver.md in tor-cell for MR#793 See merge request tpo/core/arti!798
| * | | | Add semver.md in tor-cell for MR#793breezykermo2022-10-251-0/+1
| | |/ / | |/| |
* | | | Merge branch 'fix_typos' into 'main'eta2022-10-251-2/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-cell: Fix typos in msg.rs See merge request tpo/core/arti!802
| * | | | tor-cell: Fix typos in msg.rsEmil Engler2022-10-241-2/+2
| |/ / /
* | | | Merge branch 'explain_magic' into 'main'eta2022-10-251-0/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-cell: Add comment explaing Data::MAXLEN See merge request tpo/core/arti!801
| * | | | tor-cell: Add comment explaing Data::MAXLENEmil Engler2022-10-241-0/+1
| |/ / / | | | | | | | | | | | | | | | | This commit adds a comment explaining composition of the magic number "11" found in the assignment of the Data::MAXLEN constant.
* | | | tor-error: Tidy up use of thiserror::ErrorIan Jackson2022-10-241-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Import it, as we do elsewhere, and use that import. 2. Use thiserror to generate the Display impl, rather than derive_more, as we do for errors elsewhere. (tor_error still needs derive_more::Display for ErrorKind.)
* | | | tor-error: Rename truncated module to miscIan Jackson2022-10-242-3/+3
| |_|/ |/| | | | | | | | | | | This has no external API change, but makes space for other miscellaneous errors to arrive later.
* | | Merge branch 'guards_as_bridges_part1' into 'main'Nick Mathewson2022-10-2419-213/+613
|\ \ \ | | | | | | | | | | | | | | | | Allow GuardMgr to expose bridges as guards (part 1) See merge request tpo/core/arti!785
| * | | circmgr: More NOTEs and TODO pt-clients.Nick Mathewson2022-10-241-3/+9
| | | |
| * | | linkspec: specify sort order for HasRelayIds.Nick Mathewson2022-10-241-2/+13
| | | |
| * | | Circmgr: construct paths using either Relay or OwnedCircTargetNick Mathewson2022-10-242-34/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we could only use Relay for this case, which won't work any more: a Bridge is not a `tor_netdir::Relay`. Instead we allow the GuardMgr to give us something that knows how to convert itself into an OwnedCircTarget. This change required a far amount of follow-on revisions and refactoring, but it should all be internal to the path-building logic.
| * | | netdir: Expose addrs-in-same-subnets calculation from SubnetConfigNick Mathewson2022-10-242-8/+20
| | | | | | | | | | | | | | | | | | | | Previously this was a private method only visible from Relay, but now we can use it on any two HasAddrs objects.
| * | | linkspec: Remove now-useless declared_peer_addrNick Mathewson2022-10-242-8/+4
| | | | | | | | | | | | | | | | The singleton variation here is almost never what we want.
| * | | guardmgr: Refactor the interior of FirstHop.Nick Mathewson2022-10-248-75/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now it contains either an `OwnedChanTarget` or an `OwnedCircTarget`, which will let `GuardMgr` return bridges that can be used to make circuits. As part of this change, it was necessary to revise some address-modification functions that applied to filters and `OwnedChanTarget`. Now they do the smart thing, and remove only the address that are in the `ChanMethod`. This means that the addresses from HasAddrs are still accurate about which addresses the relay "has".