| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| |
| |
| | |
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.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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).
|
| | | |
|
| | |
| |
| |
| |
| | |
These are the ones that turned out to be necessary while converting
guard samples to use ByRelayIds.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
This will enable us to impl FlagEvent for it.
|
| | |
| |
| |
| |
| | |
The bridge descriptor manager wants to index data structures by the
BridgeConfig.
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
ptmgr: Add a fuzzer for ptmessage.
See merge request tpo/core/arti!814
|
| | | | |
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
ptmgr::ipc: Try an alternate approach to initial quotes.
See merge request tpo/core/arti!813
|
| | |/ /
| | |
| | |
| | | |
This lets us use `chars()` rather than `char_indices()`.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
This is currently nightly-only and is blocked on an unresolved API
question:
https://github.com/rust-lang/rust/issues/71503
|
| | | |
| | |
| | |
| | |
| | | |
I want one of these for the bridge descriptor downloader, and they
seem reasonable to me.
|
| |\ \ \
| |/ /
|/| |
| | |
| | | |
tor-cell: Assert data length in Data cells
See merge request tpo/core/arti!800
|
| | | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Misc minor changes to tor-dirclient, for descriptor downloading
See merge request tpo/core/arti!810
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This gives callers a nice error type with source and everything.
|
| | | | |
| | | |
| | | |
| | | | |
This will be used for bridges' descriptors.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-bytes: Avoid redundant allocation
See merge request tpo/core/arti!806
|
| | | |_|/
| |/| |
| | | |
| | | | |
See c489e1d9118edd842f80b76a636037524a45ee45
|
| |\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | | |
FlagEvent trait: Implement using macros
See merge request tpo/core/arti!804
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | |/ /
|/| |
| | |
| | | |
And explain what this all means.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-cell: Consistent and secure conversion to u16
See merge request tpo/core/arti!803
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | | |
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.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-cell: Rename for_client and for_relay
See merge request tpo/core/arti!793
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Add semver.md in tor-cell for MR#793
See merge request tpo/core/arti!798
|
| | | |/ /
| |/| | |
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-cell: Fix typos in msg.rs
See merge request tpo/core/arti!802
|
| | |/ / / |
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-cell: Add comment explaing Data::MAXLEN
See merge request tpo/core/arti!801
|
| | |/ / /
| | | |
| | | |
| | | |
| | | | |
This commit adds a comment explaining composition of the magic number
"11" found in the assignment of the Data::MAXLEN constant.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.)
|
| | |_|/
|/| |
| | |
| | |
| | | |
This has no external API change, but makes space for other
miscellaneous errors to arrive later.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Allow GuardMgr to expose bridges as guards (part 1)
See merge request tpo/core/arti!785
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Previously this was a private method only visible from Relay, but now
we can use it on any two HasAddrs objects.
|
| | | | |
| | | |
| | | |
| | | | |
The singleton variation here is almost never what we want.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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".
|