summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Merge branch 'fix-rustsec-2024-0384' into 'main'Jim Newsome2025-04-283-187/+31
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace signal-hook-async-std with async-signal to fix RUSTSEC-2024-0384 Closes #1867 See merge request tpo/core/arti!2960
| * | | | | Replace signal-hook-async-std with async-signal to fix RUSTSEC-2024-0384Vijaya Bhaskar2025-04-263-187/+31
| |/ / / /
* | | | | Merge branch 'optimize-for-performance' into 'main'Nick Mathewson2025-04-284-7/+25
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | Change "release" to optimize for peformance. Closes #1954 See merge request tpo/core/arti!2959
| * | | | correct references claiming that --release optimized for sizeNick Mathewson2025-04-282-2/+6
| | | | |
| * | | | Correct description of lto.Nick Mathewson2025-04-281-1/+1
| | | | |
| * | | | Change "release" to optimize for peformance.Nick Mathewson2025-04-242-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Previously, it was optimized for size, leading to problems like \#1336.) For any purposes that need the old optimize-for-size behavior, I've added a new "release-small" target. I've also moved the "strip=debuginfo" behavior from maint/binary_size to this new target, since cargo started supporting "strip" in 1.59. Closes #1954.
* | | | | Merge branch 'upgrade-shadow' into 'main'opara2025-04-241-3/+2
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | ci: Upgrade shadow version to get TCP FIN fix See merge request tpo/core/arti!2958
| * | | | ci: upgrade shadow version to get TCP FIN fixSteven Engler2025-04-241-3/+2
|/ / / /
* | | | Merge branch 'fix-cc-handshake' into 'main'opara2025-04-241-2/+27
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | tor-proto: Prevent congestion control extension during ntor-v3 extend See merge request tpo/core/arti!2957
| * | | tor-proto: prevent cc extension during ntor-v3 extendSteven Engler2025-04-241-2/+27
|/ / / | | | | | | | | | | | | | | | | | | | | | This was missed in commits ccb65961 and eeda643f. While `params.ccontrol.is_enabled()` should always be false because of those earlier commits which ensure we don't enable congestion control, we were missing the defense-in-depth conditions here that would alert us if we accidentally did enable congestion control.
* | | Merge branch 'ticket1817_02' into 'main'David Goulet2025-04-2422-127/+468
|\ \ \ | |/ / |/| | | | | | | | | | | | | | Implement congestion control handshake negotiation Closes #1817 See merge request tpo/core/arti!2932
| * | tor-circmgr: put vegas cc in `CircParameters` behind `if false`Steven Engler2025-04-232-22/+55
| | | | | | | | | | | | | | | This means that even with the "flowctl-cc" feature enabled, we shouldn't try to negotiate congestion control.
| * | tor-circmgr: only use congestion control if "flowctl-cc" feature is enabledSteven Engler2025-04-232-3/+7
| | |
| * | tor-proto: only use congestion control if "flowctl-cc" feature is enabledSteven Engler2025-04-235-19/+46
| | | | | | | | | | | | | | | | | | | | | Congestion control is not completely working correctly, and is not fully implemented (XON/XOFF). This commit adds a new experimental "flowctl-cc" feature to enable the congestion control extension during the ntor-v3 handshake.
| * | tor-proto: expand docs for `CongestionWindowParams::set_sendme_inc`Steven Engler2025-04-231-1/+5
| | |
| * | tor-circmgr: switch from `supports_{known,named}_subver()`Steven Engler2025-04-231-3/+3
| | |
| * | tor-proto: rename `stream_sendme_required` to `uses_stream_sendme`Steven Engler2025-04-234-9/+9
| | |
| * | tor-proto: rename `allow_stream_sendme` to `uses_stream_sendme`Steven Engler2025-04-234-10/+10
| | | | | | | | | | | | | | | We use this method to decide whether to allow receiving stream SENDMEs, and also whether we should send stream SENDMEs.
| * | tor-proto: remove redundant `allow_stream_sendme` checkSteven Engler2025-04-231-15/+3
| | | | | | | | | | | | | | | | | | | | | `OpenStreamEnt::put_for_incoming_sendme()` calls `StreamSendFlowControl::put_for_incoming_sendme()`, which returns an error if the `StreamSendFlowControl` is in XON/XOFF mode. So we don't need this extra check.
| * | tor-proto: initialize `StreamSendFlowControl` based on CCSteven Engler2025-04-231-2/+6
| | | | | | | | | | | | | | | Congestion control tells us whether we should use stream or XON/XOFF flow control.
| * | tor-proto: new stream entries now take `StreamSendFlowControl`Steven Engler2025-04-232-15/+19
| | | | | | | | | | | | | | | | | | | | | | | | Previously new stream entries required a `StreamSendWindow`, but to support other flow control algorithms, we want new stream entries to take a `StreamSendFlowControl` instead. This also deduplicates the `StreamSendWindow` creation code.
| * | tor-proto: add no-op XON/XOFF flow control variantSteven Engler2025-04-231-8/+29
| | | | | | | | | | | | | | | | | | | | | This doesn't do anything yet, so is effectively like not having stream flow control. This should be implemented as part of arti#534.
| * | tests: Add CC ntorv3 negotiation unit testDavid Goulet2025-04-233-10/+86
| | | | | | | | | | | | | | | | | | | | | | | | Also add one for the sendme_inc validity function. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Don't pin CC algorithm to FixedWindow anymoreDavid Goulet2025-04-231-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Circuit handshake negotiation for congestion control has been added in previous commit so stop pinning the algorithm. This commit marks the start of congestion control usage by arti client. Closes #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Don't allow stream level SENDME with CCDavid Goulet2025-04-231-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we ever receive a stream-level SENDME from the Exit while the circuit is under congestion control (Vegas), it is a protocol violation so close the circuit. This is important in order to avoid yet another side channel with cells that would be essentially ignored silently. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Don't send stream level SENDME with CCDavid Goulet2025-04-235-7/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a new function to the CongestionControl object that returns true or false on if stream level SENDMEs are allowed by the underlying algorithm. Congestion control Vegas doesn't allow them as in it retires them and so we avoid sending them for that algorithm. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | tor-proto: added `stream_sendme_required` methodsSteven Engler2025-04-233-0/+23
| | | | | | | | | | | | | | | These pass through congestion control state to the reactor, and aren't actually hooked up to the congestion control code yet.
| * | tor-proto: added accessors for circuit legs/hopsSteven Engler2025-04-232-1/+11
| | |
| * | circ: Request congestion control with ntorv3 extensionDavid Goulet2025-04-232-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | This puts in, based on the circuit parameters, the CC extension request in the CREATE and EXTEND requests. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Apply possible subprotocol changes to circ paramsDavid Goulet2025-04-232-6/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Congestion control can change the circuit parameters if the relay we are negotiating with doesn't support FlowCtrl=2. This commit adds a function in the circuit builder that will apply any changes to the circuit parameters of the hop based on the hop protocol values. For now, only congestion control applies. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Remove CircParameters reference in call stackDavid Goulet2025-04-237-31/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids cloning the object and instead allows us to have a CircParameters per hop on the circuit path. This will come handy with congestion control where each hop might have different congestion control parameters. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | congestion: Setup a fallback algorithm in the paramsDavid Goulet2025-04-233-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CircParameters is built before path selection and thus once we start building the hops, we can't access the consensus values that were used to build it in the first place. For congestion control, we require a fallback algorithm in case the hop doesn't support FlowCtrl=2. This commit adds a "fallback_alg" to the CC parameters which will be used for this exact case. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Set the negotiated CC sendme_inc from handshakeDavid Goulet2025-04-232-7/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When receiving the congestion control response extension, evaluate our state and set the sendme_inc if valid in our circuit parameters. For this, a series of helper functions is needed. Part of #1817 Signed-off-by: David Goulet <[email protected]>
| * | circ: Make CircParameters mutable in the call stackDavid Goulet2025-04-233-12/+15
| |/ | | | | | | | | | | | | | | | | | | | | | | This is required because circuit ntor v3 handshake can negotiate circuit level parameters and thus able to change any values. Needed for congestion control ntorv3 handshake extension for which the sendme increment is negotiated. Part of #1817 Signed-off-by: David Goulet <[email protected]>
* | Merge branch 'todos-msrv' into 'main'Jim Newsome2025-04-248-14/+12
|\ \ | | | | | | | | | | | | various crates: MSRV TODO standardization and cleanup of an old TODO See merge request tpo/core/arti!2945
| * | tor-consdiff: Replaced an old MSRV TODO with a link to why it shouldn't be donehashcatHitman2025-04-231-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | - After spending quite a while trying to figure out why the tests kept failing after making the change, I eventually stumbled upon the netdoc syntax specification, which helpfully informs me that newlines MUST be ignored and discarded. Switching to using [`str::split_inclusive`] would either require extra lines to workaround and recreate the current expected behavior or changing the spec and correcting the tests to align with the new expected behavior.
| * | tor-consdiff: standardized MSRV TODOhashcatHitman2025-04-161-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped. For this one in particular, we actually do already meet the MSRV specified, but I want to check on the implementation details to see if this is still desired, since the TODO is 4 years old.
| * | tor-hsservice: standardized MSRV TODOhashcatHitman2025-04-161-1/+1
| | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped.
| * | tor-memquota: standardized MSRV TODOhashcatHitman2025-04-161-1/+2
| | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped.
| * | tor-rpc-connect: standardized MSRV TODOhashcatHitman2025-04-161-1/+1
| | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped.
| * | arti-relay: standardized MSRV TODOhashcatHitman2025-04-161-1/+1
| | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped.
| * | tor-basic-utils: standardized MSRV TODOshashcatHitman2025-04-162-4/+4
| | | | | | | | | | | | | | | - Part of a series of commits aimed at replacing all MSRV-related TODOs with a standardized format, which should be easier to find when the MSRV is bumped.
| * | tor-netdir: remove lint allow as per TODOhashcatHitman2025-04-161-3/+0
| | | | | | | | | | | | | | | - https://github.com/rust-lang/rust-clippy/issues/11764 was fixed upstream, so this is no longer needed.
* | | Merge branch 'remove-note' into 'main'Ian Jackson2025-04-241-1/+0
|\ \ \ | |_|/ |/| | | | | | | | arti-client: Remove incorrect note about `StateDirectory` usage See merge request tpo/core/arti!2952
| * | arti-client: remove incorrect note about `StateDirectory` usageSteven Engler2025-04-231-1/+0
|/ /
* | Merge branch 'chutney-shadow-flakiness' into 'main'Jim Newsome2025-04-232-5/+35
|\ \ | | | | | | | | | | | | integration-e2e-shadow flakiness debugging and workaround See merge request tpo/core/arti!2950
| * | integration-e2e-shadow: move simulation seed to yamlJim Newsome2025-04-231-3/+3
| | | | | | | | | | | | | | | | | | Since this significantly affects the behavior of the simulation, it's probably worth having it in the yaml. (It can of course still be overridden from the command-line).
| * | integration-e2e-shadow: move unblocked-syscall-latency to yamlJim Newsome2025-04-231-1/+1
| | | | | | | | | | | | | | | | | | Since this significantly affects the behavior of the simulation, it's useful to have it in the yaml for reference or if the simulation is manually rerun from the yaml.
| * | arti-bench: work around shadow writer shutdown bugJim Newsome2025-04-231-1/+11
| | |
| * | integration-e2e-shadow: use a larger max_unapplied_cpu_latencyJim Newsome2025-04-231-0/+20
|/ / | | | | | | | | | | | | | | This should make the simulation results generally more stable with respect to small perturbations, such as adding logging. It also causes a previous "heisenbug" failure in this test to reliably reproduce in every run.