summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | Implement AsyncWrite for DataWriter.Nick Mathewson2021-03-101-24/+155
| |
* | Revise DataReader to implement AsyncRead.Nick Mathewson2021-03-102-23/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tricks I needed here turned out to be: * I needed to store the future returned by read_cell() while it is returning Poll::Pending. * Since the type of that future is secret, I needed to put it in a Box<dyn Future>. * But since that future holds a reference to the DataReader, that would create a self-referential structure if we tried to store the DataReader and the future at the same time. So instead, I had to make an enum() that either holds a DataReader directly, or holds the future that will give us back the DataReader when it's done. (I also had to change the read_cell() function so that it takes ownership of the DataReader, and returns it when it's finished.) (Daniel Franke explained how to do this.) * Finally, I couldn't figure out how to change the enum's type in-place, so I had to wrap it in an Option<>. (Daniel Franke says this isn't actually necessary.) I've noted a couple of places in the read code where I want to handle errors and closes more carefully.
* | Rearrange DataStream code a bit and add an internal layer of indirectionNick Mathewson2021-03-101-36/+56
| |
* | Make note_ended private on RawCellStream.Nick Mathewson2021-03-102-8/+18
| |
* | Move DataStream into its own module.Nick Mathewson2021-03-102-204/+212
| |
* | Move ResolveStream to its own module.Nick Mathewson2021-03-102-35/+42
| |
* | Implement From<tor_proto::Error> for std::io::ErrorNick Mathewson2021-03-101-0/+23
| |
* | Move RawCellStream into its own module.Nick Mathewson2021-03-102-86/+106
| |
* | Rename TorStream => RawCellStreamNick Mathewson2021-03-102-20/+20
| |
* | Refactor DataStream constituents a bit.Nick Mathewson2021-03-092-34/+94
| | | | | | | | | | | | | | | | | | 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.
* | upgrade async-traitNick Mathewson2021-03-093-3/+3
| |
* | Bump dependencies with "cargo upgrade"Nick Mathewson2021-03-0614-25/+25
| |
* | Avoid unwrap() in llcrypto.Nick Mathewson2021-03-041-1/+1
| |
* | Avoid unwrap() in dirmgr.Nick Mathewson2021-03-042-3/+7
| |
* | Remove an unwrap in dirclient.Nick Mathewson2021-03-041-40/+41
| |
* | Move content-encoding handling to decompressNick Mathewson2021-03-044-85/+76
| | | | | | | | This way tor-dirclient doesn't need to link to the compression crates.
* | Add tor-decompress to top-level Cargo.tomlNick Mathewson2021-03-041-0/+1
| |
* | Merge remote-tracking branch 'origin/mr/18' into mainNick Mathewson2021-03-044-14/+38
|\ \
| * | Moves decompress related code into tor-decompress crateKushal Das2021-03-044-14/+38
| |/ | | | | | | | | The related data structures are marked as public in the tor-decompress crate so that tor-dirclient can access them.
* | Avoid unwrap() in dirmgrNick Mathewson2021-03-042-11/+22
| |
* | Avoid unwrap() in tor-consdiff.Nick Mathewson2021-03-041-8/+4
| |
* | Avoid unwrap() in tor-configNick Mathewson2021-03-041-5/+8
| |
* | clippy warning on msg.rsNick Mathewson2021-03-041-8/+5
| |
* | Remove use of unwrap() in tor-client.Nick Mathewson2021-03-042-7/+15
| |
* | Use expect() instead of unwrap() in tor-circmgrNick Mathewson2021-03-041-4/+12
| |
* | tor-cert: use expect() instead of unwrap()Nick Mathewson2021-03-041-2/+8
| |
* | Change how we sort link specifiers in extend cellsNick Mathewson2021-03-042-8/+7
| | | | | | | | | | Instead of implementing a dubious PartialOrd for link spec, add a sorting function and call that explicitly.
* | Avoid an is_some()/unwrap() pair in End cell parsingNick Mathewson2021-03-041-6/+8
|/
* Missing doc for private memberNick Mathewson2021-03-021-0/+3
|
* CI target to build with async-std. Running tests is harder, alasNick Mathewson2021-03-021-0/+6
|
* Update docs wrt tokio a bitNick Mathewson2021-03-023-8/+23
|
* Make a few async_test tests work correctly again.Nick Mathewson2021-03-022-155/+166
| | | | | | For these, we need to call tor_rtcompat::task::block_on() directly, since they would crash with tokio enabled. Perhaps down the line we should look for a better fix here.
* Port to work with tokio or async-std.Nick Mathewson2021-03-0215-36/+177
| | | | | | | | | | | | | | | | | | This is fairly ugly and I think I'll need to mess around with the feature configuration a while until we get something that's pleasant to develop with. This still seems like a good idea, though, since we _will_ need to be executor-agnostic in the end, or we'll have no way to handle wasm or embedded environments. Later down the road, we'll probably want to use futures::Executor or futures::Spawn more than having global entry points in tor_rtcompat. That would probably make our feature story simpler. Tokio is the default now, since tokio seems to be more heavily used for performance-critical stuff. This patch breaks tests; the next one will fix them, albeit questionably.
* My rustfmt is up-to-date with the gitlab ci one againNick Mathewson2021-03-012-10/+20
|
* Disable our cargo fmt test on CI for now.Nick Mathewson2021-02-261-1/+5
|
* Merge remote-tracking branch 'origin/mr/16' into mainNick Mathewson2021-02-261-22/+37
|\
| * Refactor StreamMap methods to use HashMap::EntryGeorge Kadianakis2021-02-261-22/+37
| |
* | Move .onion check into TorClient.Nick Mathewson2021-02-252-7/+5
| |
* | Clean-ups for documentations and lints in tor-clientNick Mathewson2021-02-252-10/+24
| |
* | Use a ConnectPref type for TorClient::connect, simplify APIs a bit, doc some.Nick Mathewson2021-02-253-23/+90
| |
* | Restore code in proxy.rs so that socks timeout errors work againNick Mathewson2021-02-252-15/+17
| | | | | | | | | | This isn't pretty, since it now has to use anyhow::downcast_ref(). I've noted a TODO about maybe not using anyhow::Error for this case.
* | Start refactoring the tor-client crate.Nick Mathewson2021-02-254-199/+252
| | | | | | | | | | This commit splits the proxy and client code into a proper module, and keeps a stripped down version of the main.rs file.
* | run cargo fix --edition-idiomsNick Mathewson2021-02-252-4/+4
| |
* | Use futures::join!() to simplify test_create().Nick Mathewson2021-02-231-19/+11
| |
* | Update to latest futures, once_cellNick Mathewson2021-02-239-9/+9
| |
* | Fix an intermittent test failure on int overflow.Nick Mathewson2021-02-191-1/+4
| |
* | Update some dependencies.Nick Mathewson2021-02-1916-17/+17
|/
* Make first-level directory retry logic configurable.Nick Mathewson2021-02-174-25/+73
|
* Make our initial bootstrap retry schedule configurarableNick Mathewson2021-02-177-12/+112
|
* tor-dirmgr: simplify config.rs a bit.Nick Mathewson2021-02-161-52/+14
|