summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | netdir: Wrap HsDir an Arc<>Nick Mathewson2023-06-091-5/+7
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change reduces the cost of cloning a `NetDir`. It's fine since–although we replace the HsDir once–we never modify it once it exists. Closes #883.
* | | | Merge branch 'pt-snowflake' into 'main'Nick Mathewson2023-06-113-2/+116
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | add documentation for configuring snowflake pt Closes #879 and #875 See merge request tpo/core/arti!1216
| * | | add a few more comments on PTstrinity-1686a2023-06-092-2/+5
| | | |
| * | | change path to snowflake clienttrinity-1686a2023-06-081-1/+2
| | | |
| * | | change link for more information on ptstrinity-1686a2023-06-081-1/+1
| | | |
| * | | remove forgoten debug linetrinity-1686a2023-06-081-1/+0
| | | |
| * | | add anchor to amp-cache linktrinity-1686a2023-06-081-1/+1
| | | |
| * | | complement general documentation on bridges and pttrinity-1686a2023-06-073-0/+12
| | | |
| * | | move snowflake example to dedicated file and comment it moretrinity-1686a2023-06-072-27/+103
| | | |
| * | | add documentation for configuring snowflake pttrinity-1686a2023-06-071-4/+27
| |/ /
* | | tor-hsclient: Use send_control_message properly (fmt)Ian Jackson2023-06-091-10/+10
| | | | | | | | | | | | This re-indents the body of the trapping IEFE.
* | | tor-hsclient: Use send_control_message properlyIan Jackson2023-06-091-14/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The comment was entirely wrong. send_control_message returns as soon as the message has been enqueued. So we actually *need* to wait for the oneshot. Also, given that a circuit collapse doesn't give us a real error, we plumb the error through the oneshot. Introduce an IEFE to capture the error from the decoding.
* | | tor-hsclient: Obtain reply_tx earlierIan Jackson2023-06-091-3/+5
| | | | | | | | | | | | | | | | | | No functional change other than to error cases. Will fit better with code to come in a moment.
* | | tor-hsclient: Break out handle_proto_errorIan Jackson2023-06-091-4/+6
| | | | | | | | | | | | We're going to want to reuse this.
* | | tor-hsclient: Add TODO for broken send_control_message useIan Jackson2023-06-091-0/+1
| | |
* | | tor-hsclient: Discuss circuit parallelisation in sad caseIan Jackson2023-06-091-1/+6
| | | | | | | | | | | | | | | Apropose https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228#note_2910588
* | | tor-hsclient: Add a TODO to retain the NetDir less longIan Jackson2023-06-091-0/+5
| | |
* | | tor-hsclient: Add some trace! temporarilyIan Jackson2023-06-091-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this I see this: 2023-06-09T12:26:27.698815Z DEBUG tor_hsclient::connect: hs conn to duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion: RPT $36acd600bc8ea6c2800434778909ce3d83621358: sending ESTABLISH_RENDEZVOUS 2023-06-09T12:26:27.699144Z TRACE tor_proto::circuit::reactor: Circ 1.0: reactor received SendMsgAndInstallHandler { msg: RelayCell { streamid: StreamId(0), msg: EstablishRendezvous(EstablishRendezvous { cookie: RendCookie(CtByteArray([220, 39, 37, 30, 37, 108, 111, 23, 127, 220, 50, 108, 161, 109, 229, 235, 110, 88, 233, 38])) }) }, sender: Sender { complete: false } } 2023-06-09T12:26:27.699238Z TRACE tor_guardmgr: Received report of guard status guard_id=FirstHopId(Guard(Default, GuardId(RelayIds { ed_identity: Some(Ed25519Identity { 6lORxW93KRbhHFPNG0g+oBkXZbRnpwBzyfDcta7ed/M }), rsa_identity: Some(RsaIdentity { $f0c9c07d1b7c6fc8547f52cac1015b4a79e2ac1a }) }))) status=Success 2023-06-09T12:26:27.699429Z TRACE tor_hsclient::connect: SEND CONTROL MESSAGE RETURNED 2023-06-09T12:26:27.699966Z INFO tor_guardmgr::guard: We have found that guard [scrubbed] is usable. 2023-06-09T12:26:27.700030Z TRACE tor_guardmgr::guard: Guard status changed. guard_id=GuardId(RelayIds { ed_identity: Some(Ed25519Identity { 6lORxW93KRbhHFPNG0g+oBkXZbRnpwBzyfDcta7ed/M }), rsa_identity: Some(RsaIdentity { $f0c9c07d1b7c6fc8547f52cac1015b4a79e2ac1a }) }) old=Untried new=Reachable 2023-06-09T12:26:27.700607Z TRACE tor_guardmgr: Known usability status guard_id=FirstHopId(Guard(Default, GuardId(RelayIds { ed_identity: Some(Ed25519Identity { 6lORxW93KRbhHFPNG0g+oBkXZbRnpwBzyfDcta7ed/M }), rsa_identity: Some(RsaIdentity { $f0c9c07d1b7c6fc8547f52cac1015b4a79e2ac1a }) }))) usable=true 2023-06-09T12:26:27.701481Z DEBUG arti_client::status: 45%: connecting successfully; directory is fetching authority certificates (8/8) 2023-06-09T12:26:27.765193Z TRACE tor_proto::circuit::reactor: Circ 1.0: handling cell: Relay(Relay { body: .. }) 2023-06-09T12:26:27.765284Z TRACE tor_proto::circuit::reactor: Circ 1.0: Received meta-cell UnparsedRelayCell { body: [39, 0, 0, 0 [[[ eldied -iwj ]]]] } 2023-06-09T12:26:27.765352Z TRACE tor_hsclient::connect: SENDING VIA ONESHOT 2023-06-09T12:26:27.765363Z TRACE tor_hsclient::connect: SENDING VIA ONESHOT DONE 2023-06-09T12:26:27.765367Z TRACE tor_proto::circuit::reactor: Circ 1.0: meta handler completed with result: Ok(UninstallHandler) 2023-06-09T12:26:29.588045Z DEBUG tor_hsclient::connect: hs conn to duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion: attempt failed: error: internal error (bug) at /volatile/rustcargo/Rustup/Arti/arti/crates/tor-hsclient/src/connect.rs:725:28: RENDEZVOUS_ESTABLISHED not sent yet This seems to suggest that send_control_message is returning sooner than expected.
* | | tor-hsclient: Add a lot of debug! (fmt)Ian Jackson2023-06-091-1/+4
| | |
* | | tor-hsclient: Add a lot of debug!Ian Jackson2023-06-091-3/+46
| | |
* | | safelog: Provide Redacted.as_inner() and .as_ref()Ian Jackson2023-06-092-0/+14
| | | | | | | | | | | | Just like for Sensitive.
* | | tor-hsclient: Add missing `#[source]` annotation for `Failure` errorIan Jackson2023-06-091-1/+1
| | | | | | | | | | | | Without this, the printed errors are very bland.
* | | tor-hsclient: Discuss gold-plated handling of RENDEZVOUS_ESTABLISHEDIan Jackson2023-06-091-0/+6
| | |
* | | tor-hsclient: Check RENDEZVOUS_ESTABLISHED *after* it should existIan Jackson2023-06-091-5/+5
| | | | | | | | | | | | | | | | | | | | | Bugfix, without which this code wouldn't work. Reported in https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228#note_2910293
* | | tor-hsclient: Discuss performance and circuit build serialisationIan Jackson2023-06-091-0/+12
| | |
* | | tor-hsclient: Add TODO about trying multiple IPTs in parallelIan Jackson2023-06-091-0/+2
| | |
* | | tor-hsclient: Expand TODO about IPT selection to mention randomnessIan Jackson2023-06-091-1/+2
| | |
* | | tor-hsclient: tuning parameters: TODO about getting from the netdirIan Jackson2023-06-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228#note_2910286 Not thinking about this right now, but it seems like a reasonable suggestion.
* | | tor-hsclient: Add vacuous doc commentsIan Jackson2023-06-091-6/+6
| | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228#note_2910284
* | | tor-hsclient: Add a TODO for changing RendPtIdentityForErrorIan Jackson2023-06-091-0/+3
| | |
* | | tor-hsclient: Improve description of `Context`Ian Jackson2023-06-091-3/+7
| | | | | | | | | | | | | | | Be more specific about precisely what it's the context for, and its lifetime.
* | | tor-hsclient: Correct InvalidTarget errorIan Jackson2023-06-092-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove TODO comment; instead, replace with a comment about future use for HS server side, inspired by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228/diffs?commit_id=ecfd39507c4e8d52788f4599d6275cab3b4a2a5f#c0123bb2f6b9a9ca50fa45886b667580a7dc951e_79_82 Do not implment `tor_error::HasKind`; the true kind depends on where the bad information came from, which the calling code will understand. As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1228/diffs?commit_id=d63ad3ab041460bf85defb99b31d6ebe075a0eb1#c0123bb2f6b9a9ca50fa45886b667580a7dc951e_101_110
* | | tor-hsclient: mocks: Fix new code to use mockable ClientCircIan Jackson2023-06-091-18/+36
| | |
* | | tor-hsclient: mocks: Make MockableClientCirc be DebugIan Jackson2023-06-091-1/+2
| | |
* | | tor-hsclient: mocks: Provide send_control_messageIan Jackson2023-06-091-0/+21
| | | | | | | | | | | | | | | | | | | | | We were able to get as far as we have, merely because all the new code uses just Arc<ClientCirc> rather than the mockable version. We want to change that, so we need to mock this function too.
* | | tor-hsclient: Call the mock with the result circuitIan Jackson2023-06-091-0/+5
| | |
* | | tor-hsclient: Define representation of intro point experience dataIan Jackson2023-06-091-3/+44
| | | | | | | | | | | | | | | This is the data structure for recording IPT outcomes and, later, selecting a good IPT to try for a new connection.
* | | tor-hsclient: Implement rendezvous setup, and retry frameworkIan Jackson2023-06-094-6/+477
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This contains code to: * Iterate over introduction points * Make multiple attempts to connect * Apply timeouts to the various phases of each attempt * Establish a rendezvous point * Represent errors that occur during the above It provides places to add: * Implementation of the INTRODUCE1/INTRODUCE_ACK handshake * Reception of RENDEZVOUS2 and actual end-to-end circuit establishment * Recording of the outcome of connection attempts via particular IPTs * Using previous IPT outcome information for selecting IPTs to try * Tests of the new code (although more mocking will probably be needed) Much of this code works with a fixed type ClientCirc rather than going via the Mockable traits. That is wrong, and it will be fixed later.
* | | tor-error: Extend applicability of RemoteNetworkTimeoutIan Jackson2023-06-091-1/+6
| | | | | | | | | | | | | | | We're going to use this for rendezvous completion timeout, which could be due to basically anything.
* | | tor-hsclient: errors: Introduce IntroPtIndexIan Jackson2023-06-092-1/+13
| | | | | | | | | | | | | | | | | | We're going to want to report about rendezvous points in errors. We'll do this by printing the "number" of the intro point in the descriptor.
* | | tor-hsclient: errors: Introduce RendPtIdentityForErrorIan Jackson2023-06-092-0/+11
| | | | | | | | | | | | | | | We're going to want to report about rendezvous points in errors. We'll be using this. And we'll want to convert it from a Relay.
* | | tor-hsclient: Allow dead code for nowIan Jackson2023-06-091-0/+2
| | | | | | | | | | | | The dead code warnings are a nuisance while this file is half-written.
* | | tor-hsclient: Mocks: Add get_or_launch_client_rend to mock poolIan Jackson2023-06-091-0/+19
| | | | | | | | | | | | This has the wrong return type at the moment.
* | | tor-hsclient: Mock trait: use actual HsCircPool in non-mock implIan Jackson2023-06-091-5/+6
| | | | | | | | | | | | The impl was in terms of itself. Sadly, nothing warns about this bug.
* | | tor-hsclient: impl HasKind for InvalidTarget: ..DescriptorValidationFailedIan Jackson2023-06-092-3/+11
| | | | | | | | | | | | | | | | | | This basically always means we couldn't cope with the descriptor. We need to extend the description of OnionServiceDescriptorValidationFailed
* | | tor-error: Introduce define_asref_dyn_std_error and use itIan Jackson2023-06-092-9/+19
| | | | | | | | | | | | | | | This factors out an ad-hoc AsRef impl. We're going to want to reuse this for another error type.
* | | tor-hsclient: Have descriptor_ensure take only &mut data.descIan Jackson2023-06-091-6/+8
| | | | | | | | | | | | | | | | | | It returns a borrow (so whatever is passed remains borrowed) and the next phase is going to need to perhaps mutate other parts of data, so we must pass only what is needed.
* | | tor-hsclient: Move &mut Data out of Context, and pass &Context (fmt)Ian Jackson2023-06-091-9/+1
| | |
* | | tor-hsclient: Move &mut Data out of Context, and pass &ContextIan Jackson2023-06-091-19/+12
| | | | | | | | | | | | | | | | | | Now Context can be usefully shared, across different threads/tasks/functions, so long as only one of them needs to modify `Data`.
* | | tor-hsclient: export InvalidTargetIan Jackson2023-06-091-0/+1
| | | | | | | | | | | | It's going to appear in our public errors.