summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | rpc: Document how cancel interacts with RequestId collision.Nick Mathewson2025-01-161-0/+6
| | |
| * | rpc: Better RpcErrorKind for for RequestCancelled.Nick Mathewson2025-01-161-4/+7
| | |
| * | rpc: Strengthen guarantees from Cancel.Nick Mathewson2025-01-163-20/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cancellation is now fallable, which allows us to detect attempts to cancel which cannot work. We now guarantee that when you try to cancel a `Cancel<F>` future, either the cancel operation will succeed, or the future will return (or will have already returned) Ok(), but not both, and not neither. Closes #818.
* | | Merge branch 'rpc-request-response-naming' into 'main'Nick Mathewson2025-01-214-29/+28
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | rpclib: Rename params/reply structs for consistency. Closes #1586 See merge request tpo/core/arti!2729
| * | rpclib: Rename params/reply structs for consistency.Nick Mathewson2025-01-214-29/+28
|/ / | | | | | | | | | | | | | | Our now convention here in rpclib is that a struct holding a request's parameters is called `FooParams`, and a struct holding that request's reply is called `FooReply`. Closes #1586
* | Merge branch 'mpl-insteructions' into 'main'Nick Mathewson2025-01-201-2/+13
|\ \ | | | | | | | | | | | | Better instructions for handling new MPL dependencies See merge request tpo/core/arti!2726
| * | maint/check_licenses: Acknowledge that we don't handle ORIan Jackson2025-01-201-1/+1
| | |
| * | maint/check_licenses: Instructions for what to do about MPLIan Jackson2025-01-201-1/+12
|/ /
* | Merge branch 'update-pow-manager-draft' into 'main'wesleyac2025-01-161-28/+54
|\ \ | | | | | | | | | | | | Update `service-side-pow.md` See merge request tpo/core/arti!2701
| * | tor-hsservice: Add more notes about publisher_update_tx.Wesley Aptekar-Cassels2025-01-161-1/+3
| | |
| * | tor-hsservice: Clarify PowManager publisher_update_tx.Wesley Aptekar-Cassels2025-01-161-0/+2
| | |
| * | tor-hsservice: Remove impl Clone for PowManager.Wesley Aptekar-Cassels2025-01-161-2/+0
| | | | | | | | | | | | Now that it's not in a Arc internally it shouldn't have this.
| * | tor-hsservice: Update PowManager persistence plan.Wesley Aptekar-Cassels2025-01-161-7/+19
| | |
| * | tor-hsservice: Make PowManager not use internal Arc.Wesley Aptekar-Cassels2025-01-161-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Per review feedback: > We have discovered that as a general rule of thumb, it is a good idea > to expose the `Arc`. This has a number of advantages; for example, if a > caller wants a `Weak` for any reason, that's right there. The typical > pattern is for the constructor to return `Arc<Self>` and methods to take > `self: &Arc<Self>`.
| * | tor-hsservice: Make PoW seed expiration be per-TP.Wesley Aptekar-Cassels2025-01-161-7/+6
| | | | | | | | | | | | | | | | | | This is something we wanted to do in general for security reasons, and ad I was implementing I discovered that it actually makes the code simpler, rather than more complicated.
| * | tor-hsservice: Update notes about PowManager persistence.Wesley Aptekar-Cassels2025-01-161-1/+1
| | |
| * | tor-hsservice: Add KeyMgr and HsNickname to PowManager.Wesley Aptekar-Cassels2025-01-161-0/+6
| | | | | | | | | | | | | | | These are needed to allow the PowManager to get the blinded ID needed to construct a PoW verifier.
| * | tor-hsservice: Give PowManager its own update loop.Wesley Aptekar-Cassels2025-01-161-14/+19
| | |
| * | tor-hsservice: Make PowManager use Arc internally.Wesley Aptekar-Cassels2025-01-161-1/+3
|/ / | | | | | | It is cleaner to not force callers to wrap it.
* | Merge branch 'test-sleep' into 'main'David Goulet2025-01-161-15/+5
|\ \ | | | | | | | | | | | | tor-proto: Replace sleep() in test with advance_until_stalled(). See merge request tpo/core/arti!2721
| * | tor-proto: Replace sleep() in test with advance_until_stalled().Gabriela Moldovan2025-01-161-15/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test spuriously failed on my !2720 branch (https://gitlab.torproject.org/gabi-250/arti/-/jobs/811495): ``` failures: ---- circuit::test::invalid_circ_sendme stdout ---- E tor_proto::channel::reactor: UniqId(71): Running reactor E tor_proto::circuit::reactor: Circ 23.17: Running circuit reactor E tor_proto::circuit::reactor: Circ 23.17: reactor received AddFakeHop { relay_cell_format: V0, fwd_lasthop: false, rev_lasthop: false, params: CircParameters { extend_by_ed25519_id: true, ccontrol: CongestionControlParams { alg: FixedWindow(FixedWindowParams { circ_window_start: 1000, circ_window_min: 100, circ_window_max: 1000 }), cwnd_params: CongestionWindowParams { cwnd_init: 124, cwnd_inc_pct_ss: Percentage { value: 100 }, cwnd_inc: 1, cwnd_inc_rate: 31, cwnd_min: 124, cwnd_max: 4294967295, sendme_inc: 31 }, rtt_params: RoundTripEstimatorParams { ewma_cwnd_pct: Percentage { value: 50 }, ewma_max: 10, ewma_ss_max: 2, rtt_reset_pct: Percentage { value: 100 } } } }, done: Sender { complete: false } } E tor_proto::circuit::reactor: Circ 23.17: reactor received AddFakeHop { relay_cell_format: V0, fwd_lasthop: true, rev_lasthop: true, params: CircParameters { extend_by_ed25519_id: true, ccontrol: CongestionControlParams { alg: FixedWindow(FixedWindowParams { circ_window_start: 1000, circ_window_min: 100, circ_window_max: 1000 }), cwnd_params: CongestionWindowParams { cwnd_init: 124, cwnd_inc_pct_ss: Percentage { value: 100 }, cwnd_inc: 1, cwnd_inc_rate: 31, cwnd_min: 124, cwnd_max: 4294967295, sendme_inc: 31 }, rtt_params: RoundTripEstimatorParams { ewma_cwnd_pct: Percentage { value: 50 }, ewma_max: 10, ewma_ss_max: 2, rtt_reset_pct: Percentage { value: 100 } } } }, done: Sender { complete: false } } E tor_proto::circuit::reactor: Circ 23.17: reactor received BeginStream { hop_num: HopNum(2), message: Begin(Begin { addr: [119, 119, 119, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109], port: 443, flags: BeginFlags(IPV6_OKAY) }), sender: Sender { tx: Sender { closed: false }, mq: TypedParticipation(Participation(Noop)) }, rx: Receiver { inner: ReceiverInner { state: Mutex { data: Ok(ReceiverState { rx: StreamUnobtrusivePeeker { buffered: None, poll_waker: None, inner: Some(Receiver { closed: false }) }, mq: TypedParticipation(Participation(Noop)), collapse_callbacks: 0 }), poisoned: false, .. } } }, done: Sender { complete: false }, cmd_checker: DataCmdChecker { expecting_connected: true } } Using RNG seed ARTI_TEST_PRNG=62d085c0fb1213c4f41d1a0a5c3f92dd10223a27c42bfda3caedfe60e011e95d E tor_proto::circuit::reactor: Circ 23.17: handling cell: Relay(Relay { body: .. }) Using RNG seed ARTI_TEST_PRNG=fd2f2f045a7340f1189972b13645346943efa2c42f43afd2161420c692bb4ff0 E tor_proto::circuit::reactor: Circ 23.17: handling cell: Relay(Relay { body: .. }) E tor_proto::circuit::reactor: Circ 23.17: Circuit reactor stopped: Err(CircProto("Mismatched tag on circuit SENDME")) E tor_proto::channel::reactor: UniqId(71): reactor received CloseCircuit(CircId(128)) E tor_proto::channel::reactor: UniqId(71): Circuit 128 is gone; sending DESTROY thread 'circuit::test::invalid_circ_sendme' panicked at crates/tor-proto/src/circuit.rs:2262:21: reactor continued running after invalid sendme failures: circuit::test::invalid_circ_sendme test result: FAILED. 142 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 4.93s ``` This is probably because of the `sleep()`-based check. This branch changes the test to use `MockRuntime`, replacing the `sleep()` with `advance_until_stalled()`.
* | | Merge branch 'refactor-poll_fn' into 'main'gabi-2502025-01-161-71/+82
|\ \ \ | |_|/ |/| | | | | | | | tor-proto: Light run_once() refactoring See merge request tpo/core/arti!2720
| * | tor-proto: Replace std::result::Result with shorter alias.Gabriela Moldovan2025-01-161-5/+6
| | | | | | | | | | | | | | | | | | The more concise name makes the code a bit more readable, IMO (and it's consistent with the `Result` type-aliasing style we've been using in the rest of the codebase).
| * | tor-proto: Remove unnecessary fully qualified path.Gabriela Moldovan2025-01-161-1/+1
| | | | | | | | | | | | It's not needed because `CircHop` is defined in the same file.
| * | tor-proto: Move outbound message sending out of circuit run_once() (fmt).Gabriela Moldovan2025-01-161-64/+64
| | | | | | | | | | | | No functional changes, just `cargo fmt`.
| * | tor-proto: Move outbound message sending out of circuit run_once().Gabriela Moldovan2025-01-161-13/+23
|/ / | | | | | | | | | | | | | | | | This is mostly code motion in preparation for refactoring `run_once()` to use `select!` instead of the hand-rolled `poll_fn` impl. Note: the code here is intentionally mis-indented, to simplify diffing (I recommend using `git diff --color-moved`). A future commit will fix the indentation.
* | Merge branch 'feature-doc' into 'main'Nick Mathewson2025-01-161-0/+5
|\ \ | |/ |/| | | | | | | | | arti: Add `restricted-discovery` to the list of experimental features. Closes #1808 See merge request tpo/core/arti!2719
| * arti: Add `restricted-discovery` to the list of experimental features.Gabriela Moldovan2025-01-161-0/+5
| | | | | | | | | | | | | | Note: there are other experimental features we might want to document here (possibly after we settle the discussion from #1706?) Closes #1808
* | Merge branch 'ticket1743_02' into 'main'David Goulet2025-01-1636-839/+2100
|\ \ | | | | | | | | | | | | Implement congestion control from prop324 See merge request tpo/core/arti!2675
| * | congestion: Don't use Vegas just yetDavid Goulet2025-01-161-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without circuit negotiation and flow control (XON/XOFF), the Vegas algorithm can not be used. Temporarily, this commit pins the algorithm to fixed window until we have the above. Signed-off-by: David Goulet <[email protected]>
| * | Make cargo clippy happyDavid Goulet2025-01-161-4/+4
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | Add missing semver.md filesDavid Goulet2025-01-162-0/+3
| | | | | | | | | | | | | | | | | | Both in tor-proto and tor-circmgr. Signed-off-by: David Goulet <[email protected]>
| * | Bring back tor-congestion empty with a tombstoneDavid Goulet2025-01-166-57/+12
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | circmgr: Remove the CircParameters build .expect()David Goulet2025-01-166-55/+30
| | | | | | | | | | | | | | | | | | Instead, return an error and make all call site handle it. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Use getters for all parametersDavid Goulet2025-01-164-68/+94
| | | | | | | | | | | | | | | | | | Allows us to remove the pub. Signed-off-by: David Goulet <[email protected]>
| * | circ: Specialize the circparams from netparams functionDavid Goulet2025-01-167-70/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Congestion control parameters have specific values depending on the circuit type. Instead of using a CircuitType, which is removed in this commit, specialize the function in this case onion and exit. This allows us to get rid of CircuitType and solely use TargetCircUsage instead. At this commit, we use .expect() on the Builder. Future commit will remove this to return a Result in case of failure. Worth noting that we don't expect one. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Remove Default from every parametersDavid Goulet2025-01-163-24/+8
| | | | | | | | | | | | | | | | | | | | | Important to enforce that every field is explicitely set so we avoid forgetting fields. Signed-off-by: David Goulet <[email protected]>
| * | units: Getters for bounds of a BoundedInt32David Goulet2025-01-161-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | Add lower() and upper() so we can access the bounds of a BoundedInt32. This is useful to get the min and max of a consensus parameter value which are always the bounds of the parameters. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Make the cc_alg values a caret_int for better code semanticDavid Goulet2025-01-164-4/+20
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | congestion: Move test code in test module for VegasDavid Goulet2025-01-161-16/+15
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | congestion: Remove duplicated commentsDavid Goulet2025-01-161-13/+0
| | | | | | | | | | | | | | | | | | No need to have these comments in the implementation of the Trait. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Move code to test moduleDavid Goulet2025-01-161-10/+14
| | | | | | | | | | | | | | | | | | | | | Put code for test inside the test module instead of gated by a cfg(test). Signed-off-by: David Goulet <[email protected]>
| * | congestion: Remove FixedWindow start window default valueDavid Goulet2025-01-163-13/+18
| | | | | | | | | | | | | | | | | | | | | | | | In unit tests, we set a 1000 by default but else, we don't set a default so our implementation doesn't forget to set the right value from the consensus. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Add standard clippy checks to testsDavid Goulet2025-01-163-0/+42
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | congestion: Some comments and mod syntax tweakingDavid Goulet2025-01-161-7/+1
| | | | | | | | | | | | | | | | | | | | | Don't put in the comments, let the top-level module comments do that job. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Make a test_utils.rsDavid Goulet2025-01-164-45/+60
| | | | | | | | | | | | | | | | | | | | | | | | Instead of having the congestion.rs test module public, make a test_utils.rs file that contains code for other unit tests within the congestion module. Signed-off-by: David Goulet <[email protected]>
| * | congestion: Remove duplicate RttParameters structDavid Goulet2025-01-161-39/+7
| | | | | | | | | | | | | | | | | | | | | Turns out that RoundTripEstimatorParams is the same exact thing so one less data structure. Signed-off-by: David Goulet <[email protected]>
| * | test: Fix circuit unit testsDavid Goulet2025-01-162-5/+9
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | proto: Remove unused circuit/sendme.rsDavid Goulet2025-01-162-459/+0
| | | | | | | | | | | | Signed-off-by: David Goulet <[email protected]>
| * | proto: Notify CC when a SENDME is receivedDavid Goulet2025-01-162-8/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | We also pass along congestion signals that may or may not be used by our congestion control algorithm. Part of #534 Signed-off-by: David Goulet <[email protected]>