summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| | | * | hyper-examples: Add comment why we use rustls and manual set root_certnield2025-06-241-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason we prefer `rustls` in this case is because `rustls` provides better portability then `native-tls` due to not being dependent on the system. We have to explicitely set the root_cert because `rustls` does not use the system CA Certs to remain portable.
| | | * | hyper-examples: Print messages to stderrnield2025-06-241-2/+2
| | | | |
| | | * | hyper-examples: Allow cli argument for test-urlnield2025-06-241-1/+4
| | | | |
| | | * | hyper-examples: Remove hyper-custom-connector-examplenield2025-06-044-268/+3
| | | | | | | | | | | | | | | | | | | | We will make a separate library for this.
| | | * | hyper-examples: Typonield2025-04-161-1/+1
| | | | |
| | | * | hyper-examples: Fix example hyper-http-hs-examplenield2025-04-161-13/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This example previously remained stuck in the while loop without any output, seeming as if this example is not working. This because the method `is_fully_reachable` is no guarantee for the actual status of the onion service. It might return false while the service is actually reachable. We added a timeout to not remain stuck in the loop.
| | | * | hyper-examples: Rename example directorynield2025-04-167-29/+29
| | | | | | | | | | | | | | | | | | | | This directory had to be renamed because otherwise it would cause conflicts with the actual hyper crate in the CI pipeline.
| | | * | hyper-examples: Fix example hyper-http-client examplenield2025-04-161-14/+22
| | | | | | | | | | | | | | | | | | | | This example previously had errors trying to make a connection, this is solved now.
| | | * | hyper-examples: Cargo fmtnield2025-04-161-1/+1
| | | | |
| | | * | hyper-examples: Add README.mdnield2025-04-151-0/+40
| | | | |
| | | * | hyper-examples: Remove subdirectories from examplenield2025-04-1511-132/+62
| | | | | | | | | | | | | | | | | | | | | | | | | This example directory had a separate directory for each example. We can simplify this by using binaries.
| | | * | hyper-examples: Remove unsafe test url form hyper-http-client-examplenield2025-04-151-1/+3
| | | | | | | | | | | | | | | | | | | | This example made a request to a website which could deanonymize the user. We now use check.torproject.org instead.
| | | * | hyper-examples: Example creating custom ArtiHttpConnector for hypernield2025-04-154-0/+300
| | | | | | | | | | | | | | | | | | | | | | | | | This example demonstrates how to create a custom connector which can be injected into a hyper client, to use hyper for Tor requests.
| | * | | hyper-examples: Typonield2025-07-201-1/+1
| | | | |
| | * | | hyper-examples: rustfmtnield2025-07-201-4/+7
| | | | |
| | * | | hyper-examples: Clarify comment regarding `is_fully_reachable`nield2025-07-201-3/+2
| | | | | | | | | | | | | | | | | | | | Previous comment was not clear. `is_fully_reachable` only gives false negatives, not false positives.
| | * | | hyper-examples: Simplify code for timeoutnield2025-07-201-51/+15
| | | | | | | | | | | | | | | | | | | | We removed the while loop.
| | * | | hyper-examples: Print messages to stderrnield2025-07-201-6/+6
| | | | |
| | * | | hyper-examples: Add comment why we use rustls and manual set root_certnield2025-07-201-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason we prefer `rustls` in this case is because `rustls` provides better portability then `native-tls` due to not being dependent on the system. We have to explicitely set the root_cert because `rustls` does not use the system CA Certs to remain portable.
| | * | | hyper-examples: Print messages to stderrnield2025-07-201-2/+2
| | | | |
| | * | | hyper-examples: Allow cli argument for test-urlnield2025-07-201-1/+4
| | | | |
| | * | | hyper-examples: Remove hyper-custom-connector-examplenield2025-07-204-268/+3
| | | | | | | | | | | | | | | | | | | | We will make a separate library for this.
| | * | | hyper-examples: Typonield2025-07-201-1/+1
| | | | |
| | * | | hyper-examples: Fix example hyper-http-hs-examplenield2025-07-201-13/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This example previously remained stuck in the while loop without any output, seeming as if this example is not working. This because the method `is_fully_reachable` is no guarantee for the actual status of the onion service. It might return false while the service is actually reachable. We added a timeout to not remain stuck in the loop.
| | * | | hyper-examples: Rename example directorynield2025-07-207-29/+29
| | | | | | | | | | | | | | | | | | | | This directory had to be renamed because otherwise it would cause conflicts with the actual hyper crate in the CI pipeline.
| | * | | hyper-examples: Fix example hyper-http-client examplenield2025-07-201-14/+22
| | | | | | | | | | | | | | | | | | | | This example previously had errors trying to make a connection, this is solved now.
| | * | | hyper-examples: Cargo fmtnield2025-07-201-1/+1
| | | | |
| | * | | hyper-examples: Add README.mdnield2025-07-201-0/+40
| | | | |
| | * | | hyper-examples: Remove subdirectories from examplenield2025-07-2010-107/+62
| | | | | | | | | | | | | | | | | | | | | | | | | This example directory had a separate directory for each example. We can simplify this by using binaries.
| | * | | hyper-examples: Remove unsafe test url form hyper-http-client-examplenield2025-07-201-1/+3
| | | | | | | | | | | | | | | | | | | | This example made a request to a website which could deanonymize the user. We now use check.torproject.org instead.
| | * | | hyper-examples: Example creating custom ArtiHttpConnector for hypernield2025-07-204-0/+300
| |/ / / |/| | | | | | | | | | | | | | | This example demonstrates how to create a custom connector which can be injected into a hyper client, to use hyper for Tor requests.
* | | | Merge branch 'flow-ctrl' into 'main'opara2025-07-1715-39/+596
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-proto: Add support for sending XON messages See merge request tpo/core/arti!3099
| * | | | tor-basic-utils: add `assert_val_impl_trait!` macroSteven Engler2025-07-172-2/+24
| | | | |
| * | | | tor-proto: replace `DataReader`Steven Engler2025-07-172-44/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `DataReader` -> `DataReaderInner` `DataReaderNew` -> `DataReader` This means that the `DataReader` now supports XON/XOFF flow control using the `XonXoffReader`. This means that it can receive requests for a new drain rate from the reactor, and can send the new drain rate to the reactor once there is no more stream data queued.
| * | | | tor-proto: add `DataReaderNew`Steven Engler2025-07-173-5/+75
| | | | | | | | | | | | | | | | | | | | This will later become `DataReader`.
| * | | | tor-proto: add `StreamReceiver::is_empty()`Steven Engler2025-07-171-1/+39
| | | | |
| * | | | tor-proto: add the `XonXoffReader` and connect it to the reactorSteven Engler2025-07-1711-15/+267
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea here is that the reactor builds an `XonXoffReaderCtrl` for the new stream, and the `XonXoffReaderCtrl` can receive notifications from the reactor's `StreamFlowControl`. The `XonXoffReaderCtrl` can be combined with any `AsyncRead` to build a `XonXoffReader`, essentially wrapping the `AsyncRead` with a type that handles XON/XOFF flow control. Essentially, the reactor gives you a type that allows you to add XON/XOFF flow control support to any `AsyncRead`. We will add this `XonXoffReader` to the `DataReader` in a future commit.
| * | | | tor-proto: add plumbing for sending XONSteven Engler2025-07-176-5/+171
| | | | | | | | | | | | | | | | | | | | | | | | | Nothing actually causes an XON to be sent yet. But this adds the code so that anything holding the `StreamTarget` can request to send an XON.
| * | | | tor-proto: move some code into a `approx_stream_bytes_buffered()` fnSteven Engler2025-07-171-6/+11
|/ / / /
* | | | Merge branch 'fix-shellcheck' into 'main'opara2025-07-174-4/+4
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | maint: Avoid x-prefix in comparisons. See merge request tpo/core/arti!3100
| * | | maint: Avoid x-prefix in comparisons.Gabriela Moldovan2025-07-174-4/+4
|/ / / | | | | | | | | | | | | | | | | | | This applies the fixes suggested by shellcheck (the x-prefixes were causing the `shellcheck` job to fail; see [SC2268]). [SC2268]: https://www.shellcheck.net/wiki/SC2268
* | | Merge branch 'flow-ctrl' into 'main'opara2025-07-1624-188/+663
|\ \ \ | | | | | | | | | | | | | | | | tor-proto,tor-cell: Code refactoring and add support for sending XOFF messages See merge request tpo/core/arti!3094
| * | | tor-cell: add `FlowCtrlVersion::V0`Steven Engler2025-07-162-12/+5
| | | |
| * | | tor-proto: send XOFF messages when the queue grows too largeSteven Engler2025-07-166-6/+121
| | | |
| * | | tor-proto: add `CongestionControl::uses_xon_xoff()`Steven Engler2025-07-163-0/+19
| | | |
| * | | tor-proto: add dedicated types for the incoming stream queueSteven Engler2025-07-1610-24/+275
| | | | | | | | | | | | | | | | | | | | XON/XOFF flow control will want to know how many data bytes are queued on a stream, so the new types track that.
| * | | tor-cell: change `UnparsedRelayMsg::data_len`Steven Engler2025-07-153-9/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It now performs some validation and can return a `Result`. We perform validation here since different cell formats may have different maximum data lengths in the future, and `UnparsedRelayMsg` doesn't expose the cell format so it's difficult to perform this validation at a higher layer.
| * | | tor-proto: combine some objects into a `StreamComponents`Steven Engler2025-07-152-28/+64
| | | | | | | | | | | | | | | | | | | | | | | | As we continue adding more functionality to streams like flow control, we'll have more objects to pass around. This tries to group them together.
| * | | tor-proto: rename `StreamSendFlowControl` and related changesSteven Engler2025-07-155-46/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The plan is to use `StreamSendFlowControl` (now `StreamFlowControl`) for both outgoing and incoming directions, so a name change is needed. This also updates some comments, and renames some related struct fields that have the word "send" in them.
| * | | tor-proto: adjust `CtrlMsg::SendSendme` and renameSteven Engler2025-07-153-60/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to extend the command to implement different flow control methods. We could add new command variants for new flow control methods instead, but I think it makes sense to have them be a single command as they will always have a stream ID / hop location in common. This also helps us keep the flow control logic in one place.