This release introduces a new, usage-based timeout for strongly isolated circuits,
experimental tokio-console support, a new arti hsc ctor-migrate command,
and a configuration option for controlling which onion services to launch.
Breaking changes
- In arti-client, TorClient::launch_onion_service() and
- TorClient::launch_onion_service_with_hsid() now return None
- if the onion service is disabled in the config.
Security fixes
- Added Host header validation for non-CONNECT requests to HTTP CONNECT port,
- to prevent adversarial web pages from probing the version of Arti and its
- capabilities. (!3429 (merged), !3468 (merged))
Major bugfixes
- Arti no longer exits with an error if configured with a log file with no
- directory prefix. (!3491 (merged), #2240 (closed))
- fs-mistrust now has consistent behavior with stat and mkdir, which
- consider "" to be an invalid path, and all of its error messages now
- include the file name that triggered the error. (!3491 (merged), #2265 (closed), #2266 (closed))
Major features
- Implemented a usage-based timeout for strongly isolated circuits,
- as specified in proposal 368. (!3430 (merged), #2237 (closed))
- New experimental arti hsc ctor-migrate command line invocation
- for migrating C Tor onion service client keys to the Arti keystore.
- (!3390 (merged), !3485 (merged), #2213 (closed))
Breaking changes in lower-level crates
- In tor-proto, we no longer export ClientCircSyncView, and
- IncomingStreamRequestFilter now takes a &CircSyncView.
- ClientInitiatorHandshake::connect() now returns an
- UnverifiedClientChannel, and VerifiedChannel and
- UnverifiedChannel are no longer pub.
- In tor-llcrypto, CtByteArray no longer derives Deref.
- In tor-hsservice, we no longer export
- RestrictedDiscoveryConfig::build_unvalidated(). (!3503 (merged))
- In tor-hsservice, OnionService::launch() now returns None
- if the service is disabled in the config.
- In tor-circmgr, the CircMgrConfig trait now requires
- that the implementing type also implements AsRef<VanguardConfig>,
- and the vanguard_config() function is no longer conditional upon
- feature flags.
- In tor-netdoc, individual relay flags are now variants of a RelayFlag
- enum, rather than constants, and RelayFlag has a different API.
- RouterStatus now contains the new DocRelayFlags type.
- The parse2 entrypoints now take a new ParseInput,
- parse2::MultiplicitySelector replaces ItemSetSelector etc.
Onion service development
- Individual onion services can now be disabled via the config. (!3253 (merged), #2133 (closed))
Relay development
- Internal refactoring to support reusing IncomingStreamRequestFilter for exit
- relay streams. (!3414 (merged))
- Various internal refactorings in tor-proto, to enable us to reuse
- implementation-agnostic parts of the client circuit reactor implementation
- for relays. (!3408 (merged), !3467 (merged), !3470 (merged))
- Refactored the experimental RelayCirc API. (!3410 (merged))
- Added an OR port listener task, for listening for incoming connections.
- (!3396 (merged))
- In tor-rtcompat, TCP listening sockets have the same options set
- regardless of the underlying runtime. Additionally, we set IPV6_V6ONLY
- on Unix platforms to enable binding AF_INET and AF_INET6 sockets to the same
- port. (!3457 (merged), #2246 (closed))
- Added support for generating the keys and certificates relays need for TLS.
- (!3349 (merged), #2205 (closed))
- New configuration options for setting the OR port used for listening. (!3466 (merged))
- Extracted the client- and relay-specific parts UnverifiedChannel and VerifiedChannel
- in separate modules. (!3401 (merged))
- In tor-circmgr, CircMgrConfig::vanguard_config() is no longer
- feature-gated. (!3498 (merged), #2270 (closed))
Directory authority development
- Added initial groundwork for the directory mirror component of tor-dirserver.
- (!3301 (merged), !3436 (merged), !3426 (merged), !3460 (merged), !3501 (merged), #2254, #2255, #2256)
- Many internal refactorings to reduce code duplication, and to improve the structure
- of the new netdoc parser. (!3450 (merged), !3456 (merged), !3455 (merged), !3486 (merged), !3499 (merged))
- Overhauled RelayFlags, and added support for conditionally retaining unknown info.
- (!3454 (merged), !3477 (merged), !3489 (merged))
- In tor-netdoc, much of the encode is now public. (!3471 (merged))
- Improved the ergonomics of the new netdoc parser. (!3478 (merged))
Testing
- Updated the CLI tests to use use the new cargo_bin_cmd! macro,
- fixing a deprecation warning. (4ed5695f844aec6bbe05ced9e8efde437bfece27)
- Fixed the flaky client::circuit::test::bad_extend_crypto test.
- (!3433 (merged), #2232 (closed))
- Replaced the deprecated MockSleepProvider with SimpleMockTimeProvider
- in a few crates.
- (!3424 (merged), #1885)
Documentation
- Added perl-Time-Piece to the list of required dependencies on Red Hat-derived
- distributions in CONTRIBUTING.md.
- (66eedd0140cd85bc8abd43d790d1a0093b35d21d)
- Removed security disclaimer about onion service support. (!3464 (merged))
- Improved the documentation of the new netdoc parser. (!3479 (merged))
- Added documentation clarifying the behavior of the
- max_concurrent_streams_per_circuit onion service setting.
- (!3492 (merged))
- Added rate_limit_at_intro to the example onion service config.
- (!3493 (merged))
- Updated the anonticket URL in the README and CONTRIBUTING.md. (!3500 (merged))
- Moved a no-longer-intended naming convention to the poc module. (!3505 (merged))
Infrastructure
- Rust 1.91 is now our "recent" Rust image in CI. (!3418 (merged), !3419 (merged))
- In CI, bump shadow to the latest version. (!3431 (merged))
- Refactored the shadow CI test script to have better output.
- (335148a46e68a40c08181ea732a6aa5f6ca113c8)
- In CI, the shadow tests now have a higher success threshold
- for onion service transfers. (!3428 (merged))
- New maint script for checking if all published crates specify
- an MSRV in their Cargo.toml. (!3405 (merged))
- Imported the latest changes from rust-maint-common. (!3438 (merged))
Cleanups, minor features, and bugfixes
- Updated dependencies. (!3417 (merged))
- Replaced copy_interactive with our new futures-copy crate,
- to avoid spawning extra tasks and reduce lock contention.
- (!3416 (merged), #786)
- Added vim *.swp files to .gitignore. (!3437 (merged))
- Added experimental support for tokio-console.
- (!3441 (merged), !3444 (merged), !3445 (merged), #2236 (closed))
- Bumped pwd-grp to 1.0.1. (!3443 (merged), #2136 (closed))
- Bumped derive-deftly to the latest version. (!3448 (merged), !3451 (merged), !3494 (merged))
- Resolved the clippy lints reported by the beta version of Rust.
- (!3449 (merged))
- Reduced the high-water mark for writes of ChannelFrame.
- (!3447 (merged), #2200 (closed))
- Renamed OutPtr to OutBoxedPtr for clarity in arti-rpc-client-core.
- (!3439 (merged), #1588 (closed))
- Added TODO about adding guardrails to prevent launching onion services
- with a different configuration than the one they were instantiated with.
- (!3453 (merged), #2249)
- Added an InertTorClient function for creating an OnionService.
- (!3435 (merged), #2118)
- Updated to the latest list of Tor fallback directories. (!3459 (merged))
- Removed an outdated TODO. (!3463 (merged))
- Added comment to explain why RetryError deduplicates the errors
- it displays. (!3465 (merged), !3474 (merged))
- Arti now displays a warning if the opentelemetry config is set,
- but the opentelemetry feature is not enabled. (!3458 (merged), #2247 (closed))
- Bumped num-bugint-dig to 0.8.6. (!3475 (merged), #2110 (closed))
- Improved error reporting in our HTTP CONNECT proxy. (!3476 (merged))
- Fixed an incorrectly gated match arm in tor-circmgr. (!3482 (merged))
- In hashx, the internal Register::as_u8() is now gated behind the
- compiler feature, fixing a dead code warning. (!3483 (merged))
- CtByteArray no longer derives Deref. (!3432 (merged), #2172 (closed))
- Improved opentelemetry instrumentation, to help debug #2079 and other
- related issues. (!3403 (merged))
- Arti's HTTP CONNECT proxy now returns a status code derived from the remote
- END reason. Additionally, the proxy now includes its supported capabilities
- in the Tor-Capabilities response header, to conform with proposal 365.
- (!3481 (merged), !3473 (merged), #2259 (closed))
- Added a missing test host to the shadow CI script. (!3490 (merged))
- Fixed a typo in an onion service client error message. (!3488 (merged))
- INTRODUCE_ACK errors now include the index of the introduction point
- the error originates from. (!3495 (merged))
- Fixed a typo in a debug log. (!3504 (merged))
- Fixed a number of nightly warnings. (!3508 (merged))
Note: this build does break the old patches for Stalemate, an updated version 0.6.5 is available now.
Hopefully this release of Arti fixes the corrupted state issue that results in upstream timeouts.