| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| |
|
|
|
|
|
|
| |
This doesn't yet change the public API, it just begins the work of
plumbing these around throughout `ClientCirc`, `Reactor`, etc.
This can't be broken up into smaller commits without causing build
failures.
|
| | |
|
| | |
|
| |
|
|
| |
And the same with `single_leg_with_id_mut` and `single_leg_mut`.
|
| | |
|
| | |
|
| |
|
|
| |
These give more ways of accessing legs.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
MockSleepProvider and MockSleepRuntime have been declared deprecated
by the docs for some time. We're about to mark them `#[deprecated]`.
This commit has been split out for clarity of review.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
This is mostly code motion + some visibility adjustments.
Moving all of these outside of `reactor` makes it easier to see which
parts are internal vs which are accessed by the reactor. It also helps
us enforce/audit invariants such as 'there should be no contention on
the `CircHop::map` mutex' (the stream map is now private to
`reactor::circuit`, and therefore nothing inside `reactor` will be
directly accessing it).
|
| |
|
|
| |
This will enable us to move `CircHop` out of `reactor.rs`.
|
| |
|
|
| |
This will enable us to factor `Circuit` out of `reactor.rs`.
|
| |
|
|
|
|
|
|
|
| |
This is going to become a hazard. Let's be explicit.
This means using educe to derive the Default for Data.
We also need to update our educe dependency to 0.4.22, since that's
when Default(expression= "...") started working correctly.
|
| |\
| |
| |
| |
| | |
tor-proto: Update CtrlCmd and CtrlMsg docs.
See merge request tpo/core/arti!2829
|
| | |
| |
| |
| |
| |
| | |
In aa08ede11fd483cd6dcb4522c431f9e07001717e, the reactor loop was
rewritten to unconditionally read from the `CtrlMsg` channel, so we need
to adjust the docs.
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
tor-proto: Add CtrlCmd:ShutdownAndReturnCircuit
Closes #1876
See merge request tpo/core/arti!2831
|
| | | |
| | |
| | |
| | | |
Closes #1876
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This will be used to implement the new `ShutdownAndReturnCircuit`
control command.
Part of #1876
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
Some of these were supposed to be `bad_api_usage`, because they result
from API misuse rather than an internal error (bug).
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This will enable us to reuse these checks for implementing other methods
that are only supported if the conflux set has a single leg.
|
| | |/
| |
| |
| |
| |
| | |
For consistency with the `CtrlCmd::Shutdown` handling from
`Reactor::wait_for_create` (`handle_shutdown()` also prints a helpful
trace log).
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
tor-proto: Rewrite reactor loop to read from all circuits.
Closes #1863
See merge request tpo/core/arti!2817
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
This was left over from the refactoring that moved the inner `select`
into the `ConfluxSet` impl.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit updates the `Reactor::run_once()` loop to attempt to read
from (and write to) all of its circuit legs as opposed to just the
primary one.
Note that this slightly changes the behavior of the reactor. Previously,
we'd only read from the control channel if the `chan_sender` was ready,
whereas now the control channel is unconditionally read from, in the
*outer* select. The overall effect is that the control channel can cause
unbounded buffering in the `chan_sender` of each circuit (which can
happen if the `chan_sender` is not ready to send). This was actually how
the reactor worked before the refactoring from !2747, which is
reflected in the `chan_sender` docs:
```rust
/// Sender object used to actually send cells.
///
/// NOTE: Control messages could potentially add unboundedly to this, although that's
/// not likely to happen (and isn't triggereable from the network, either).
chan_sender: SometimesUnboundedSink<AnyChanCell, ChannelSender>,
```
I don't believe this to be a problem, for the reason mentioned in the
`chan_sender` docs, and because the main reason we check for
`chan_sender` readiness is to apply backpressure on senders, which is
not something we need to worry about when it comes to the control
channel. Besides, the control channel is unbounded, so not reading
from it won't stop the senders from sending more commands anyway.
Closes #1863
|
| | |
| |
| |
| |
| | |
This tells the reactor to remove a given circuit from the conflux set,
and will be used to remove the circuits that have been shut down.
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
Remove semver files for 1.4.1
See merge request tpo/core/arti!2827
|
| | | | |
|
| |\ \ \
| |/ /
|/| |
| | |
| | | |
tor-proto: Remove unnecessary async block.
See merge request tpo/core/arti!2815
|
| | | | |
|
| | |/
| |
| |
| |
| | |
`futures::future::poll_fn` returns a future, so the `async` block isn't
actually necessary.
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Make DataStream, and its members, implement Sync.
Closes #1859
See merge request tpo/core/arti!2808
|
| | |
| |
| | |
Co-authored-by: Ian Jackson <[email protected]>
|
| | |
| |
| |
| |
| |
| |
| | |
Also, use static_assertions to enforce that that they
_stay_ Send+Sync.
Closes #1859.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-proto: Add ConfluxSet type in the reactor
See merge request tpo/core/arti!2804
|
| | | | |
|