summaryrefslogtreecommitdiff
path: root/crates/tor-proto
Commit message (Collapse)AuthorAgeFilesLines
...
* StreamPollSet: allow access to inner streamsJim Newsome2024-08-082-48/+345
|
* KeyedFuturesUnordered: explicitly document Stream behaviorJim Newsome2024-08-081-0/+13
|
* KeyedFuturesUnordered: return actual referencesJim Newsome2024-08-081-23/+10
| | | | | | We can actually return references here instead of `impl Deref`, simplifying this code a bit and follow-on code to use this in StreamPollSet.
* KeyedFuturesUnordered: additional testingJim Newsome2024-08-081-37/+98
| | | | | | | | | Primarily I wanted to exercise the code path that we get a spurious wakeup due to a future that was removed from the map later becoming ready. I also ended up merging ReadyFut and PendingFut into a more flexible ValueFut to make this a little nicer.
* Add KeyedFuturesUnordered::get and KeyedFuturesUnordered::get_mutJim Newsome2024-08-081-3/+72
|
* KeyedFuturesUnordered::remove: return the future as wellJim Newsome2024-08-082-18/+55
|
* KeyedFuturesUnordered: refactor so that futures are accessibleJim Newsome2024-08-082-100/+100
| | | | | | | | | | | Instead of wrapping `FuturesUnordered`, which doesn't support efficient access to its internal futures, keep the futures themselves in our own HashMap, and use a custom Waker to be notified which futures are ready to be polled. *Almost* a pure refactor in this step - the implementation now requires that keys are `Send + Sync + 'static` so that we can put them inside an `Arc` and send them over a channel.
* Merge branch 'docsrs' into 'main'Jim Newsome2024-08-071-1/+0
|\ | | | | | | | | | | | | Don't need to tell docs.rs to enable `docsrs` cfg. It does it automatically as of https://github.com/rust-lang/docs.rs/pull/2390#event-11664409098 While this change isn't in our MSRV yet, we were only using this when building for docs.rs, where we use the latest anyway. See merge request tpo/core/arti!2308
| * Don't need to tell docs.rs to enable `docsrs` cfgKunal Mehta2024-08-021-1/+0
| | | | | | | | | | It now does it automatically, see <https://docs.rs/about/builds#detecting-docsrs>.
* | tor-proto streammap: Drop receiver for outgoing messages after ENDJim Newsome2024-08-061-0/+4
| | | | | | | | Fixes #1513
* | tor-proto: add Debug impls and improve panic messageJim Newsome2024-08-063-2/+8
|/ | | | For debugging #1513
* tor-proto: Remove circuit reactor's outbound bufferJim Newsome2024-08-011-71/+13
| | | | | | | We no longer need this. StreamMap now supports handling only one outgoing message at a time while ensuring no streams starve, so we no longer ever pull messages out of the map when we're not actually ready to send them.
* tor-proto::circuit::StreamMap: Use StreamPollSetJim Newsome2024-08-013-75/+128
| | | | | | | | | | | | | | | | | | | | * Refactors `StreamMap` to use `StreamPollSet` to manage its receivers for mpsc streams. * Extends `StreamMap` to support iterating only over streams that have a pending outgoing message, and in round-robin order. * Updates `circuit::reactor::Reactor` to use this functionality. It now iterates only over streams that have a ready outgoing message, and only actually "pops" a message that is ready to be sent. This mildly simplifies the circuit reactor, but more importantly clears the way to: * Remove the "outbound queue" of messages that were pulled from stream channels but that we couldn't send yet due to congestion control. * Support opportunistic packing when preparing to send a relay message. (proposal 340). * Refactor the circuit reactor's `run_once` into futures that we can `select!` over.
* Add StreamPollSetJim Newsome2024-08-012-0/+603
|
* Add KeyedFuturesUnorderedJim Newsome2024-08-012-0/+367
|
* Bump versions for tor- and arti- crates to 0.21.0Nick Mathewson2024-08-011-17/+17
| | | | | | | | | | This is the result of: ``` for crate in $( ./maint/list_crates |grep '^\(tor\|arti-\)' ); do cargo set-version -p $crate 0.21.0 done ```
* tor-proto::circuit: Move test-only methods into test moduleJim Newsome2024-07-291-12/+14
|
* tor-proto circuit tests: dedupe circid magic numberJim Newsome2024-07-291-6/+15
|
* tor-proto circuit test: Move to tighter scope and shadow outer defJim Newsome2024-07-291-15/+17
|
* tor-proto circuit tests: delete stale commented-out testJim Newsome2024-07-291-66/+0
|
* tor-proto circuit tests: fix some comment copy-pastaJim Newsome2024-07-291-1/+1
|
* circuit reactor: add comment pointing to tests in other moduleJim Newsome2024-07-291-1/+3
|
* Merge branch 'dev/cve/handshake_clarification' into 'main'gabi-2502024-07-151-1/+1
|\ | | | | | | | | UnverifiedChannel: Clarify check's peer_cert See merge request tpo/core/arti!2260
| * UnverifiedChannel: Clarify check's peer_certClara Engler2024-07-111-1/+1
| | | | | | | | | | | | | | This commit clarifies the documentation of the `peer_cert` parameter in the `UnverifiedChannel::check` function, in order to reflect that it represents the certificate presented during the ServerHello in the TLS handshake and not in the in-protocol CERTS cell.
* | tor-proto: Return proper `Error::MissingId`Clara Engler2024-07-121-1/+1
|/ | | | | | | | | This commit fixes a bug in the `ClientCirc::extend_ntor` function, which currently returns a `Error::MissingId(Ed25519)` in the case that no RSA identity has been found in the accompanying channel target. This behavior is obviously wrong, because a missing RSA identity should yield a `Error::MissingId(Rsa)`.
* Fix clippy::doc_lazy_continuationIan Jackson2024-07-082-3/+3
|
* Add allows for many dead code warnings in tor-protoIan Jackson2024-07-082-0/+5
| | | | | | | I'm not sure how to resolve these. See #1467. We ought to fix them before they propagate to +stable, particularly since after !2242 they'll break CI.
* Merge branch 'todo-number' into 'main'Alexander Færøy2024-07-072-2/+2
|\ | | | | | | | | Fix two TODO ticket numbers See merge request tpo/core/arti!2224
| * Fix two TODO ticket numbersIan Jackson2024-06-252-2/+2
| | | | | | | | | | I seem to have mistyped this ticket number. We meant #1397 aka "Circuit reactor isn't great", not some release ticket.
* | Update versions of 0.x tor-* and arti-* cratesIan Jackson2024-06-271-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nailing-cargo -uE set-version -p arti-client 0.20.0 nailing-cargo -uE set-version -p arti-relay 0.20.0 nailing-cargo -uE set-version -p arti-rpcserver 0.20.0 nailing-cargo -uE set-version -p tor-async-utils 0.20.0 nailing-cargo -uE set-version -p tor-basic-utils 0.20.0 nailing-cargo -uE set-version -p tor-bytes 0.20.0 nailing-cargo -uE set-version -p tor-cell 0.20.0 nailing-cargo -uE set-version -p tor-cert 0.20.0 nailing-cargo -uE set-version -p tor-chanmgr 0.20.0 nailing-cargo -uE set-version -p tor-checkable 0.20.0 nailing-cargo -uE set-version -p tor-circmgr 0.20.0 nailing-cargo -uE set-version -p tor-config 0.20.0 nailing-cargo -uE set-version -p tor-consdiff 0.20.0 nailing-cargo -uE set-version -p tor-dirclient 0.20.0 nailing-cargo -uE set-version -p tor-dirmgr 0.20.0 nailing-cargo -uE set-version -p tor-error 0.20.0 nailing-cargo -uE set-version -p tor-geoip 0.20.0 nailing-cargo -uE set-version -p tor-guardmgr 0.20.0 nailing-cargo -uE set-version -p tor-hsclient 0.20.0 nailing-cargo -uE set-version -p tor-hscrypto 0.20.0 nailing-cargo -uE set-version -p tor-hsrproxy 0.20.0 nailing-cargo -uE set-version -p tor-hsservice 0.20.0 nailing-cargo -uE set-version -p tor-keymgr 0.20.0 nailing-cargo -uE set-version -p tor-linkspec 0.20.0 nailing-cargo -uE set-version -p tor-llcrypto 0.20.0 nailing-cargo -uE set-version -p tor-log-ratelim 0.20.0 nailing-cargo -uE set-version -p tor-memquota 0.20.0 nailing-cargo -uE set-version -p tor-netdir 0.20.0 nailing-cargo -uE set-version -p tor-netdoc 0.20.0 nailing-cargo -uE set-version -p tor-persist 0.20.0 nailing-cargo -uE set-version -p tor-proto 0.20.0 nailing-cargo -uE set-version -p tor-protover 0.20.0 nailing-cargo -uE set-version -p tor-ptmgr 0.20.0 nailing-cargo -uE set-version -p tor-relay-selection 0.20.0 nailing-cargo -uE set-version -p tor-rpcbase 0.20.0 nailing-cargo -uE set-version -p tor-rtcompat 0.20.0 nailing-cargo -uE set-version -p tor-rtmock 0.20.0 nailing-cargo -uE set-version -p tor-socksproto 0.20.0 nailing-cargo -uE set-version -p tor-units 0.20.0 Each of which runs a rune like cargo set-version --offline -p tor-units 0.20.0
* | Update to statrs 0.17Ian Jackson2024-06-251-1/+1
| | | | | | | | | | | | | | No code changes needed. Precisely nailing-cargo -Eu upgrade --incompatible -p statrs
* | Update to itertools 0.13.0Ian Jackson2024-06-251-1/+1
| | | | | | | | | | | | | | No code changes needed. Precisely nailing-cargo -Eu upgrade --incompatible -p itertools
* | Rename OptTimestamp to AtomicOptTimestampNeel Chauhan2024-06-243-12/+12
|/
* Merge branch 'sometimes-unbounded' into 'main'Nick Mathewson2024-06-113-50/+266
|\ | | | | | | | | RFC: Provide and use SometimesUnboundedSender in circuit reactor See merge request tpo/core/arti!2172
| * SometimesUnboundedSink: Add a test case with some manual sequencingIan Jackson2024-05-301-0/+68
| |
| * SometimesUnboundedSink: Write commentary about WakerIan Jackson2024-05-301-0/+36
| |
| * SometimesUnboundedSink: Document some error behaviourIan Jackson2024-05-301-0/+4
| |
| * SometimesUnboundedSink: Fix a copypaste errorIan Jackson2024-05-301-1/+1
| | | | | | | | | | If only I'd used a macro for these, but that's not entirely straightforward.
| * SometimesUnboundedSink: Narrow dead code allowIan Jackson2024-05-301-2/+1
| |
| * Use SometimesUnboundedSink for the circuit reactor's bag-on-the-sideIan Jackson2024-05-291-50/+13
| |
| * Implmeent SometimesUnboundedSinkIan Jackson2024-05-292-0/+146
| |
* | Remove semver.md files.Gabriela Moldovan2024-06-051-10/+0
| | | | | | | | The 1.2.4 release is out, so we won't be needing these anymore.
* | Bump all the unstable tor- and arti- crates to 0.19.Gabriela Moldovan2024-06-051-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The unstable crates are: - tor-error - tor-config - tor-units - tor-geoip - tor-rtcompat - tor-rtmock - tor-log-ratelim - tor-rpcbase - tor-memquota - tor-llcrypto - tor-protover - tor-bytes - tor-hscrypto - tor-socksproto - tor-checkable - tor-cert - tor-linkspec - tor-cell - tor-proto - tor-netdoc - tor-consdiff - tor-netdir - tor-relay-selection - tor-persist - tor-chanmgr - tor-ptmgr - tor-guardmgr - tor-circmgr - tor-dirclient - tor-dirmgr - tor-keymgr - tor-hsclient - tor-hsservice - tor-hsrproxy - arti-client - arti-rpcserver - arti-hyper - tor-basic-utils - tor-async-utils Done using ``` for p in "${unstable[@]}"; do cargo set-version -p $p 0.19; done ``` where `unstable` contains the list above
* | Merge branch 'poll-ready-unpin-bool' into 'main'Nick Mathewson2024-05-293-12/+28
|\| | | | | | | | | Tidy up the ChannelSender::poll_ready inherent method See merge request tpo/core/arti!2171
| * ChannelSender::poll_ready_unpin_bool: add otiose ext trait docIan Jackson2024-05-291-0/+1
| |
| * ChannelSender::poll_ready_unpin_bool: move to utilIan Jackson2024-05-293-20/+24
| | | | | | | | This is where it belongs.
| * ChannelSender::poll_ready_unpin_bool: extension traitIan Jackson2024-05-292-1/+8
| | | | | | | | | | | | | | This makes this available for any Sink + Unpin. Which we want because we're about to wrap our ChannelSender in a Sink wrapper. It's in the wrong place now; we'll move it in a moment.
| * ChannelSender::poll_ready_unpin_bool: rename from poll_readyIan Jackson2024-05-292-5/+9
| | | | | | | | | | | | | | | | | | | | This would otherwise shadow the poll_ready method, which is confusing. Also this paves the way for making it available for any Sink + Unpin. Improve the docs somewhat to explain what this thing actually is.
| * ChannelSender::poll_ready inherent method: Don't discard errorIan Jackson2024-05-291-1/+1
| | | | | | | | | | | | | | | | I think this error was in fact always Error::CircuitClosed because it came from ChannelClosed.into(). Anyway, we shouldn't squash it. Now this function has semantics identical to Sink::poll_ready, just a slightly different signature.
| * ChannelSender::poll_ready inherent method: Avoid apparent discardIan Jackson2024-05-291-1/+1
| | | | | | | | Make it clear we're discarding `()`, not an actual value.