summaryrefslogtreecommitdiff
path: root/crates/tor-proto
Commit message (Collapse)AuthorAgeFilesLines
* Update patchlevel for crates with nontrivial changes.Nick Mathewson2023-09-051-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are: ``` hashx equix tor-async-utils tor-error tor-config tor-rtmock tor-llcrypto tor-bytes tor-hscrypto tor-hspow tor-cert tor-linkspec tor-cell tor-proto tor-netdoc tor-netdir tor-chanmgr tor-guardmgr tor-dirmgr tor-keymgr tor-hsclient tor-hsservice arti-client arti ```
* Merge branch 'upgrades' into 'main'Nick Mathewson2023-09-051-1/+1
|\ | | | | | | | | Upgrade a couple of dependencies for today's release. See merge request tpo/core/arti!1566
| * Upgrade to visibility 0.1.0Nick Mathewson2023-09-051-1/+1
| |
* | tor-proto: Use HopNum::display() instead of Debug representation.Gabriela Moldovan2023-08-251-3/+3
| |
* | tor-proto: Remove the Display impl of HopNum (fmt).Gabriela Moldovan2023-08-251-6/+6
| |
* | tor-proto: Remove the Display impl of HopNum.Gabriela Moldovan2023-08-252-15/+9
| | | | | | | | | | This removes the `Display` impl of `HopNum` and replaces its usage with `HopNum::display`.
* | tor-proto: Add a HopNum::display function.Gabriela Moldovan2023-08-253-5/+41
| | | | | | | | | | | | | | | | | | This function can be used to display a more user-friendly representation of a `HopNum`. This will print hop numbers as 1-indexed values: #1, #2, etc.. We will soon remove HopNum's Display implementation in favour of `.display()`.
* | tor-proto: Make HopNum indices appear 1-based in the Display impl.Gabriela Moldovan2023-08-251-1/+4
|/ | | | | | | | | | This makes `HopNum`s display as 1-indexed values. This will make error messages more intuitive, because when talking about an N-hop circuit, we generally speak in terms of hops 1..N (rather than 0..N-1). Internally, our `HopNum` indices are still 0-based. Closes #996
* tor-proto: Make some imports more preciseIan Jackson2023-08-231-1/+3
| | | | | | | | A warning is getting in my way when I run cargo clippy -p tor-hsservice --all-features See also https://gitlab.torproject.org/tpo/core/arti/-/issues/1006#note_2932088
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-2316-0/+16
|
* Use "typos-cli" to fix a bunch of typos.Nick Mathewson2023-08-221-1/+1
|
* proto: fix a comment to refer to circuits, not channels.Nick Mathewson2023-08-221-1/+1
|
* Merge branch 'send_raw_msg' into 'main'Nick Mathewson2023-08-223-1/+50
|\ | | | | | | | | | | | | proto: new ClientCirc::send_raw_msg function. Closes #1010 See merge request tpo/core/arti!1525
| * proto: Add crossrefs between start_conversation and send_raw_msgNick Mathewson2023-08-221-0/+6
| |
| * proto: new ClientCirc::send_raw_msg function.Nick Mathewson2023-08-213-1/+44
| | | | | | | | Closes #1010.
* | Resolve warnings about ambiguous/redundant doc linksNick Mathewson2023-08-221-1/+1
|/ | | | | Nightly rustdoc now warns if you have a link that isn't necessary, and if you have a link that might refer to two different things.
* tor-proto: Add test where an incoming stream comes from an unexpect hop.Gabriela Moldovan2023-08-181-0/+44
| | | | | | | This adds a test that checks if the reactor is shut down if it receives an incoming stream request from an unexpected hop. Part of #1009
* tor-proto: Make ClientCirc::allow_stream_requests take a HopNum.Gabriela Moldovan2023-08-183-7/+34
| | | | | | | | | | For consistency with the other `ClientCirc` APIs, `ClientCirc::allow_stream_requests` now takes a `HopNum` argument. Upon receiving an incoming stream request, the reactor now checks if the request came from the hop specified in `allow_stream_requests` (and if it came from a different hop, the circuit is closed). Part of #1009
* Merge branch 'handshake-tests' into 'main'gabi-2502023-08-171-0/+15
|\ | | | | | | | | test: add a test for missing NETINFO cells See merge request tpo/core/arti!1501
| * test: add a test for missing NETINFO cellsEmil Engler2023-08-121-0/+15
| | | | | | | | | | | | This commit adds a unit test to the `tor_proto::handshake` module, which tests the behavior when no NETINFO cell is present within a channel.
* | Merge branch 'all_crates_warnings' into 'main'Nick Mathewson2023-08-162-0/+2
|\ \ | | | | | | | | | | | | Resolve all warnings that appear from `maint/every-crate` See merge request tpo/core/arti!1507
| * | tor-proto: Fix dead_code when building without experimental-apiNick Mathewson2023-08-162-0/+2
| | |
* | | Apply some churn from rustfmt (beta)Ian Jackson2023-08-161-1/+1
|/ /
* | Merge branch 'remove-unused-import' into 'main'Ian Jackson2023-08-161-1/+3
|\ \ | | | | | | | | | | | | tor-proto: remove unused import See merge request tpo/core/arti!1493
| * | tor-proto: remove unused importEmil Engler2023-08-101-1/+3
| |/ | | | | | | | | This commit removes an unused import within the test module of the `tor_proto::circuit` module.
* | proto: Fix a type-complexity warning.Nick Mathewson2023-08-142-9/+21
| |
* | proto: API to expose the `CircuitBinding` type.Nick Mathewson2023-08-144-5/+40
| | | | | | | | Closes #993
* | proto: Take CircuitBinding one step forward into Reactor::add_hop.Nick Mathewson2023-08-144-10/+26
| |
* | proto: Add (not-yet-exposed) code to remember and use KH valuesNick Mathewson2023-08-145-16/+82
|/ | | | | | | | These values are computed as part of the circuit extension handshake, and are used as MAC keys to bind `ESTABLISH_INTRO` messages to a particular circuit so that they can't be replayed. Part of #993.
* tor-proto: Make update_state() and discard() return Result<(), Bug>.Gabriela Moldovan2023-08-092-6/+6
| | | | These functions only ever return `Bug` errors.
* tor-proto: Implement IncomingStream::discard().Gabriela Moldovan2023-08-082-2/+4
|
* tor-proto: Replace boolean flags with an IncomingStreamState enum.Gabriela Moldovan2023-08-081-18/+56
| | | | | | | | | | This commit introduces an `IncomingStreamState` enum, which indicates whether the stream was accepted, discarded, or rejected, or if it is still pending. The `is_rejected`/`is_accepted` boolean flags are no longer needed. Without this change, we'd need to introduce yet another boolean flag when we implement `discard()` (for the "discarded" state).
* Merge branch 'tor-proto-incoming-todo' into 'main'gabi-2502023-08-081-18/+15
|\ | | | | | | | | tor-proto: Replace IncomingStreamMsg with IncomingStreamRequest. See merge request tpo/core/arti!1477
| * tor-proto: Replace IncomingStreamMsg with IncomingStreamRequest.Gabriela Moldovan2023-08-071-18/+15
| | | | | | | | | | | | | | | | The two enums essentially serve the same purpose, so we don't need both of them. This also addresses the TODO that says we should return an error if `accept_data` is called for a RESOLVE stream.
* | tor-proto: Fix broken docs.Gabriela Moldovan2023-08-081-1/+1
| |
* | tor-proto: Make it obvious that we're discarding a Result.Gabriela Moldovan2023-08-081-1/+1
| |
* | tor-proto: Make StreamTarget::close return the oneshot::Receiver instead of ↵Gabriela Moldovan2023-08-082-33/+15
| | | | | | | | | | | | | | | | | | | | | | | | blocking. Instead of having 2 version of `StreamTarget::close` (a blocking one and a nonblocking one), we can just return the `oneshot::Receiver` for receiving the reactor's response and let the caller of `StreamTarget::close` decide whether to block. This allows us to reduce some code duplication in the `IncomingStream` implementation.
* | tor-proto: Make take_inner() use mut_inner() to check the inner value.Gabriela Moldovan2023-08-081-3/+6
|/
* tor-proto: Implement `Drop` for `IncomingStream`.Gabriela Moldovan2023-08-071-11/+64
|
* tor-proto: Keep track of whether the `IncomingStream` was accepted.Gabriela Moldovan2023-08-071-0/+5
| | | | | The behaviour of `IncomingStream::drop` is going to depend on whether the stream was accepted or not.
* tor-proto: Add a function for closing a stream without waiting for the ↵Gabriela Moldovan2023-08-071-0/+19
| | | | | | | reactor to respond. This will be used for implementing `Drop` for `IncomingStream` (it needs to "reject" the stream on drop).
* tor-proto: Rename misleading field in `DataCmdChecker`.Gabriela Moldovan2023-08-071-13/+16
| | | | | | | | This is a follow-up from !1451. This commit solves a `TODO HSS` introduced when `DataCmdChecker` got an additional constructor (`new_connected`) for creating "pre-connected" streams. See f6745d31 for more details.
* Merge branch 'proto-flaky-test' into 'main'gabi-2502023-08-043-14/+29
|\ | | | | | | | | | | | | tor-proto: allow_stream_requests now waits until the control message is received. Closes #994 See merge request tpo/core/arti!1474
| * tor-proto: Shut down the reactor if an error occurs in incoming stream ↵Gabriela Moldovan2023-08-041-4/+4
| | | | | | | | | | | | | | | | init/close. Propagating the error means will cause the reactor to shut down (there's not much the control message sender can do about it, so there's no point in sending it the error).
| * tor-proto: reject() now waits until the control message is received.Gabriela Moldovan2023-08-042-1/+11
| | | | | | | | | | | | | | | | As a result, by the time the `reject` future resolves, the stream has been removed from the reactor's stream map and the corresponding END cell has been sent. Fixes #998.
| * tor-proto: allow_stream_requests now waits until the control message is ↵Gabriela Moldovan2023-08-043-13/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | received. `ClientCirc::allow_stream_requests` is now `async` and waits until the `AwaitIncomingStream` control message is processed by the reactor. This guarantees that by the time the `allow_stream_requests` future resolves, the reactor is ready to process BEGIN/BEGIN_DIR/RESOLVE cells. Previously, the client tasks from allow_stream_requests tests had to sleep before sending the BEGIN cell to give the reactor time to process the `AwaitIncomingStream` control message (which tells the reactor to expect incoming BEGIN/BEGIN_DIR/RESOLVE cells on the circuit). Fixes #994
* | proto: methods to wait until a channel/circuit is shut down.Nick Mathewson2023-08-045-4/+59
|/ | | | | | | | | | | | | | | | | | The implementation here is perhaps excessively simple: we put a `oneshot::Sender` in the `Reactor` object, and a `Shared<oneshot::Receiver>` in the circuit or channel. When the reactor is dropped, any copy of the `Shared<Receiver>` will yield `Err(Cancelled)`. I'm marking these methods as experimental because I'm not sure I've thought of all the implications here, and we might want to change things around. Down the road, these methods might want to yield a `Result<>` indicating why the reactor was shut down. This feature was inspired by a request from Saksham Mittal, and a felt need while working on !1472.
* Merge branch 'future_proof_lints' into 'main'gabi-2502023-08-041-2/+2
|\ | | | | | | | | | | | | add_warning: Change missing_docs,unreachable_pub to warn Closes #951 See merge request tpo/core/arti!1470
| * Run add_warnings on all files.Nick Mathewson2023-08-041-2/+2
| |
* | tor-proto: Add ClientCirc::start_conversation().Gabriela Moldovan2023-08-045-19/+33
| | | | | | | | | | | | | | | | | | | | | | This will enable hidden services to send `RENDEZVOUS1` messages to the `N`th hop of the circuit rather than the `N + 1`th virtual one (which can only used after the client and service have completed the introduction handshake). This also deprecates `start_conversation_last_hop`. Closes #959