summaryrefslogtreecommitdiff
path: root/tor-proto/src/stream.rs
Commit message (Collapse)AuthorAgeFilesLines
* Move DataStream into its own module.Nick Mathewson2021-03-101-204/+2
|
* Move ResolveStream to its own module.Nick Mathewson2021-03-101-35/+3
|
* Move RawCellStream into its own module.Nick Mathewson2021-03-101-86/+5
|
* Rename TorStream => RawCellStreamNick Mathewson2021-03-101-16/+16
|
* Refactor DataStream constituents a bit.Nick Mathewson2021-03-091-33/+93
| | | | | | | | | These new (internal so far) APIs correspond more closely to what we'll need for AsyncRead and AsyncWrite. We also make write methods take a mutable reference to self, since that seems to be (closer to) what the AsyncRead/AsyncWrite code expects.
* When a stream read fails, block writes too.Nick Mathewson2020-12-221-13/+10
| | | | Closes arti#49.
* Fix some rustdoc warnings.Nick Mathewson2020-12-091-1/+1
|
* Mark some XXXX issues as XXXX-A1.Nick Mathewson2020-12-071-3/+3
|
* Refactor DataStream to be splittable, and have internal locking.Nick Mathewson2020-11-041-8/+57
| | | | This lets me fix the deadlock in the proxy code.
* stream: Update to enable more fine-grained lockingNick Mathewson2020-11-041-15/+26
| | | | | Not sure this is quite right, or quite deadlock free, but it lets us read/write cells on a stream we haven't locked.
* Unify interface for detecting stream close.Nick Mathewson2020-10-271-2/+1
|
* Resolve a bunch of XXXM3 comments in tor-proto.Nick Mathewson2020-10-261-9/+2
|
* Improve documentation in tor-protoNick Mathewson2020-10-261-1/+1
|
* Add a close() method for streamsNick Mathewson2020-10-201-0/+8
|
* Mark must-resolve XXXX issues with "XXXXM3".Nick Mathewson2020-10-181-2/+2
| | | | | | | | | | "M3" is for "milestone 3" -- my target to fix the technical debt that I think will be bad if we ship even a pre-alpha with it. These aren't necessarily _all_ must-resolve, but they're all must-look-at. Closes #15
* Document all private members in tor-protoNick Mathewson2020-10-131-0/+14
|
* Make sure that protocol errors terminate the circuit responsible.Nick Mathewson2020-10-131-9/+18
|
* Try giving distinct handling to streams where END has been sentNick Mathewson2020-10-121-7/+2
| | | | | | This is the first step along the line to handling Tor issue tor#27557. We want to remember streams that we've ended and treat them as distinct from streams that have never existed
* Move counts_towards_windows() code into circuit moduleNick Mathewson2020-10-091-1/+1
|
* Rename remaining get_ accessorsNick Mathewson2020-09-281-2/+2
|
* Fix a few clippy issuesNick Mathewson2020-09-271-1/+3
|
* Split the cell-handling parts of tor-proto into a new crate.Nick Mathewson2020-09-261-1/+1
|
* Lower our "#[allow(dead_code)]" decl in tor_proto."Nick Mathewson2020-09-251-0/+1
|
* Improve documentation and lightly refactor SENDME codeNick Mathewson2020-09-251-1/+3
|
* Attempted implementation of stream sendme cellsNick Mathewson2020-09-251-5/+28
|
* Initial error cleanup on streams/circuitsNick Mathewson2020-09-251-12/+12
|
* Migrate ClientMain to byte-oriented API.Nick Mathewson2020-09-241-2/+2
|
* Try to make a send/receive style API for streams.Nick Mathewson2020-09-241-2/+121
|
* Add support for RELAY_END cells.Nick Mathewson2020-09-241-2/+0
| | | | | | | | | | | | | | | | | | | | This was a hard one. I need to make sure that we send an END cell when the stream is dropped. But we can't call an .await from inside the drop() function, since drop() isn't async, and we don't have an executor. Fortunately, you can call send() on a oneshot::Sender without having to await on it, so that's the obvious thing to put in drop(). But we need some way to make sure that the oneshot::Receiver is given to the reactor, and is .awaited. For that, we needed a control channel. And the reactor needs to treat the control channel and the close messages as equally important. So that's how I wound up with a Fuse<Select<mpsc::Receiver<Result<Foo>>, SelectAll<Once<oneshot::Receiver<Foo>>>>>. I doubt that this is actually the best way to handle any of this!
* Fix some errors; document some places where error handling is bogusNick Mathewson2020-09-211-0/+2
|
* More documentation for channel, circuit, stream.Nick Mathewson2020-09-211-1/+4
|
* Start implementing streams and circuit-level reactors.Nick Mathewson2020-09-211-0/+51
Also, revise nearly all of the circuit/channel interaction to actually send relay cells to the right place and do sensible things with them.