summaryrefslogtreecommitdiff
path: root/crates/tor-proto/src
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* | 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
| |
* | 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.
| * ChannelSender::poll_ready inherent method: Use Sink:poll_readyIan Jackson2024-05-291-1/+1
| | | | | | | | | | | | | | | | | | We're going to change this function, but first we are going to make its behaviour identical to Sink::poll_ready. This avoids open-coding the call to poll_read on cell_tx. The error handling is still strange. We'll fix that in a moment.
* | proto: Try to clarify why StreamReader has a StreamTarget.Nick Mathewson2024-05-292-3/+10
| |
* | proto: Add a test for closing streams.Nick Mathewson2024-05-291-1/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | This test verifies that when we invoke the code to close a stream, an END message is actually sent. The test comes in two versions: * `drop_stream` closes the stream by dropping it. It currently passes on main. * `close_stream` closes the stream by running `AsyncWriteExt::close` on the writer. It is a regression test for #1368. It currently fails on main.
* | proto: Improve documentation about DataStream lifetimes and closingNick Mathewson2024-05-292-1/+40
| | | | | | | | | | | | | | In particular, clarify that dropping the DataWriter on its own does nothing unless the DataReader is also dropped. Related to #1368.
* | proto: Make DataWriter::close actually do something.Nick Mathewson2024-05-293-9/+41
|/ | | | | | | | | | | | | | | | | | | Previously we had a bug where `<DataWriter as AsyncWrite>::close` (or `shutdown` in tokio-land) would not actually have any effect. It _would_ drop the `StreamTarget` held by the `DataWriter`, but since the `DataReader` also held a `StreamTarget`, the MPSC channel would not get closed, and the circuit reactor would not realize that the stream wanted to shut down. Now we use `mpsc::Sender::close_channel` to make our closes effectual. Closes #1368. Additionally, we fix a bug where `poll_close()` never actually did anything if the buffer had nothing in it when it was called. Previously, `poll_flush_impl()` would exit immediately if it had no data to flush. That isn't what we want when we are closing!
* Remove an outdated comment.Nick Mathewson2024-05-201-3/+0
|
* Make an arc clone explicit.Nick Mathewson2024-05-201-1/+1
|
* Fix a typo.gabi-2502024-05-201-1/+1
|
* proto: Divide up some elements of ChannelDetails.Nick Mathewson2024-05-162-52/+58
| | | | | | | | | | | | | | Previously ChannelDetails had a double duty: It held elements shared among the clones of a Channel, and it also held elements shared between the Channel and the Reactor. But now that Channel doesn't have to implement Clone, we can more the non-Reactor elements into Channel itself. This change may improve cache locality a bit, and should make it a little easier to follow the channel code. I've also moved unique_id out of ChannelDetails into Channel _and_ Reactor: it is small, immutable, and used all the time in logging.
* Make Channel non-Clone.Nick Mathewson2024-05-161-2/+2
|
* proto: Make Channel explicitly Arc<.>Nick Mathewson2024-05-165-13/+18
| | | | | | | | | | | | | | | | Previously, Channel was a type that you could Clone that implicitly its state. Now, Channel always appears as an Arc<Channel>. This change has several benefits: * It makes the relationship between Channel struct and the underlying channel more clear. * It enables Channel to participate in the RPC system, where everything has to be an Arc<.> * It enables us to have a Weak<Channel>, if we ever want to. * It will let us move various members out of ChannelDetails. We did this change a while ago with ClientCirc.
* proto: Move Channel send functionality into a separate type.Nick Mathewson2024-05-162-48/+65
| | | | | | | | | | | | This serves three purposes: * It removes the 'send a cell' method from the channel's public API. Nothing outside of tor-proto should have to use this. * It paves the way for giving each circuit a separate handle onto the channel's send functionality. This will eventually let the channel multiplex among circuits more intelligently. * It prepares for the next commit, which will make Channel itself universally Arc<.>ed.
* proto: Document ChannelDetails members that don't need to be shared.Nick Mathewson2024-05-161-1/+7
|
* proto: Document usage for each mutable part of ChannelDetailsNick Mathewson2024-05-161-1/+12
| | | | | For all mutable shared state, we ought to know which part of the program sets it, which part of the program reads it, and why.
* proto: Explicitly enforce maxima on SENDME windows.Nick Mathewson2024-05-143-5/+16
| | | | | | | | | | | | | | No actual bug here, just technical debt: For `SendWindow`s, our tag system already ensured that we rejected any SENDME that didn't correspond to an appropriate drain. Still, it doesn't hurt to check. For `RecvWindow`s, it would have been a protocol violation if we ever did this, but it makes sense to make it an internal error if we try. Part of #1383.
* proto: Fix compilation with stream-ctrl but not experimental-api.Nick Mathewson2024-05-142-2/+2
|
* proto: Expose wait_for_connection as a part of the DataStream API.Nick Mathewson2024-05-091-1/+1
|
* Merge branch 'new_ci_cfg_strategy' into 'main'Nick Mathewson2024-05-071-2/+2
|\ | | | | | | | | | | | | add_warning/CI: New strategy to avoid "unexpected-cfgs" warning Closes #1395 See merge request tpo/core/arti!2129
| * Re-run maint/add_warning.Nick Mathewson2024-05-061-2/+2
| | | | | | | | This commit is automatically generated.
* | Circuit reactor: use refutable let to unnest some codeJim Newsome2024-05-061-34/+35
| |
* | Circuit reactor: rename 'hop to 'hop_outboundJim Newsome2024-05-061-3/+3
| | | | | | | | | | It was a bit misleading since it doesn't cover all processing for the hop.