| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
We will make a separate library for this.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This directory had to be renamed because otherwise it would cause conflicts with the actual hyper crate in the CI pipeline.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This example previously had errors trying to make a connection, this is solved now.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This example directory had a separate directory for each example. We can
simplify this by using binaries.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This example made a request to a website which could deanonymize the user. We now use check.torproject.org instead.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This example demonstrates how to create a custom connector which can be injected
into a hyper client, to use hyper for Tor requests.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Previous comment was not clear. `is_fully_reachable` only gives false negatives, not false positives.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
We removed the while loop.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
We will make a separate library for this.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This directory had to be renamed because otherwise it would cause conflicts with the actual hyper crate in the CI pipeline.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This example previously had errors trying to make a connection, this is solved now.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This example directory had a separate directory for each example. We can
simplify this by using binaries.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This example made a request to a website which could deanonymize the user. We now use check.torproject.org instead.
|
| | |/ / /
|/| | |
| | | |
| | | |
| | | | |
This example demonstrates how to create a custom connector which can be injected
into a hyper client, to use hyper for Tor requests.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-proto: Add support for sending XON messages
See merge request tpo/core/arti!3099
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
`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.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This will later become `DataReader`.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |/ / / / |
|
| |\ \ \ \
| |_|_|/
|/| | |
| | | |
| | | | |
maint: Avoid x-prefix in comparisons.
See merge request tpo/core/arti!3100
|
| |/ / /
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-proto,tor-cell: Code refactoring and add support for sending XOFF messages
See merge request tpo/core/arti!3094
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
XON/XOFF flow control will want to know how many data bytes are queued
on a stream, so the new types track that.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|