summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | 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.
* | | Merge branch 'stream_close_v2' into 'main'Nick Mathewson2024-05-294-11/+162
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | proto: Make DataWriter::close actually do something. Closes #1368 See merge request tpo/core/arti!2170
| * | | 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!
* | | Merge branch 'mypy' into 'main'Ian Jackson2024-05-292-12/+19
|\ \ \ | |/ / |/| | | | | | | | mypy: Enable strict mode See merge request tpo/core/arti!2169
| * | maint/update-md-links: avoid * import from typingIan Jackson2024-05-291-1/+1
| | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2169#note_3033481
| * | mypy: Enable strict modeIan Jackson2024-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | | Consultation with a nearby Python expert, on another topic, revealed that without --strict, mypy turns most of its stuff off by default. Sadly (?) this bureaucracy didn't find any bugs.
| * | maint/update-md-links: Add type handling for regexp edge casesIan Jackson2024-05-281-3/+6
| | |
| * | maint/update-md-links: Add easy type annotationsIan Jackson2024-05-281-8/+12
|/ /
* | Merge branch 'chan_arc' into 'main'Nick Mathewson2024-05-2814-153/+212
|\ \ | | | | | | | | | | | | Proto: Refactor Channel to always be Arc. See merge request tpo/core/arti!2163
| * | 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-163-4/+6
| | |
| * | proto: Make Channel explicitly Arc<.>Nick Mathewson2024-05-1614-53/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-163-48/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Merge branch 'explicit_delegate_enable_padding' into 'main'Nick Mathewson2024-05-171-1/+1
|\ \ \ | | | | | | | | | | | | | | | | chanmgr: Delegate to Channel::engage_padding_activities explicitly. See merge request tpo/core/arti!2164
| * | | chanmgr: Delegate to Channel::engage_padding_activities explicitly.Nick Mathewson2024-05-171-1/+1
|/ / / | | | | | | | | | | | | | | | (This isn't a bugfix, but it helps avoid the appearance of a function calling itself. This _would_ become a bug if we imported the wrong trait into scope here.)
* | | Merge branch 'libc-downgrade' into 'main'Nick Mathewson2024-05-171-2/+2
|\ \ \ | | | | | | | | | | | | | | | | Downgrade Cargo.lock to previous libc crate version See merge request tpo/core/arti!2166
| * | | Downgrade to previous libc crateNick Mathewson2024-05-171-2/+2
|/ / / | | | | | | | | | The current version has been yanked.
* | | Merge branch 'changelog-fix' into 'main'Nick Mathewson2024-05-161-0/+2
|\ \ \ | |/ / |/| | | | | | | | Add two blank lines to CHANGELOG. See merge request tpo/core/arti!2165
| * | Add two blank lines to CHANGELOG.Nick Mathewson2024-05-161-0/+2
|/ /
* | Merge branch 'ci-after-script-tweaks' into 'main'Nick Mathewson2024-05-161-19/+6
|\ \ | | | | | | | | | | | | CI: Move cargo clean section to after_script. See merge request tpo/core/arti!2159
| * | CI: Move cargo clean section to after_script.Nick Mathewson2024-05-151-19/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Part of arti#1410. The idea here is to consolidate `cargo clean` in an after_script section we call everywhere, rather than have it be in one that we can forget to copy. We can't call `cargo clean` unconditionally, though, since some of our jobs don't install cargo. So we make sure it's there.
* | | Merge branch 'special_methods' into 'main'Nick Mathewson2024-05-169-37/+264
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Allow RPC methods with non-serializable types Closes #1403 See merge request tpo/core/arti!2152
| * | | Add a few "TODO RPC" notesNick Mathewson2024-05-162-0/+8
| | | |
| * | | RPC: Expose dispatch table from ContextNick Mathewson2024-05-163-0/+11
| | | | | | | | | | | | | | | | | | | | We need to do this so that we can actually invoke RPC functions from one another.
| * | | RPC: Fill in documentation about invoke_specialNick Mathewson2024-05-162-6/+27
| | | |
| * | | Tests for invoke_specialNick Mathewson2024-05-161-0/+42
| | | |
| * | | RPC: Fix types for DispatchTable::invoke_specialNick Mathewson2024-05-161-11/+14
| | | | | | | | | | | | | | | | | | | | Now that Method::Error exists, we can downcast Any to the actual function's return type.
| * | | RPC: Require an Error type in methods.Nick Mathewson2024-05-167-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed so that we can cast special methods' return types properly. I wish I could make this optional, but Rust doesn't allow defaulting an associated type.
| * | | Rpc: Allow invoker_ents to be marked as @specialNick Mathewson2024-05-161-7/+21
| | | | | | | | | | | | | | | | A @special invoker does not get an RPC entry.
| * | | Relax Serialize requirement on method outputs.Nick Mathewson2024-05-162-11/+13
| | | | | | | | | | | | | | | | | | | | Now Methods can return anything; and only if their outputs are Serialize will they implement RpcInvocable.
| * | | Split Invocable into RpcInvocable.Nick Mathewson2024-05-161-50/+77
| | | | | | | | | | | | | | | | | | | | RpcInvocable will only be implemented on types whose output can be serialized.
| * | | RPC: Add an "invoke special" mechanismNick Mathewson2024-05-161-1/+62
| | | | | | | | | | | | | | | | This is part of work on #1403.
| * | | rpc: Move typetag onto subtrait of DynMethodNick Mathewson2024-05-164-23/+43
| | | | | | | | | | | | | | | | | | | | | | | | This will allow us to create dispatchable methods that are only invoked from inside the arti code, and are not themselves serializable.
* | | | Merge branch 'links' into 'main'Nick Mathewson2024-05-165-175/+664
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Provide and run script for making/checking link blocks in CHANGELOG.md Closes #1388 See merge request tpo/core/arti!2126
| * | | | update-md-links: Actually bomb out if subprocess failsIan Jackson2024-05-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2126#note_3030954
| * | | | update-md-links: Use enumerate()Ian Jackson2024-05-071-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Suggested here https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2126#note_3026423
| * | | | update-md-links: (Always) print something confirmatory to stdoutIan Jackson2024-05-071-1/+6
| | | | |
| * | | | CI: Run mypy on the (so far, 1) type-annotated Python3 fileIan Jackson2024-05-071-0/+7
| | | | |
| * | | | update-md-links: Host code into functions and add typesIan Jackson2024-05-071-167/+214
| | | | |
| * | | | update-md-links: Add many comments / helpstringsIan Jackson2024-05-071-2/+49
| | | | |
| * | | | update-md-links: Minor code motion for tidying upIan Jackson2024-05-071-2/+3
| | | | |