summaryrefslogtreecommitdiff
path: root/crates/arti-client/src/err.rs
Commit message (Collapse)AuthorAgeFilesLines
* Spelling fix in arti_client::erreta2022-11-291-1/+1
|
* PtMgr: Use a persistent state directory for PT state.Nick Mathewson2022-11-281-0/+5
| | | | | | | | | | This makes a `pt_state` directory inside .local/share/arti (or the local equivalent), right next to our existing `state` dir. Ideally we would use a separate directory for each PT, but we have a very fuzzy "what is a specific PT" notion. Closes #667
* Integrate PtMgr into arti-client.Nick Mathewson2022-11-281-0/+7
| | | | | | | | If support is available at compile-time, then we construct a PtMgr and register it with the ChanMgr. We keep a handle to it ourself so that we can reconfigure it as needed. Closes #659.
* bridges: Create and install a BridgeDescMgr when we bootstrapIan Jackson2022-11-151-0/+7
|
* Move GuardMgr::new call to arti_client::TorClientIan Jackson2022-11-141-0/+6
| | | | | | | Having this done within circmgr was irregular - most of our other key buildup functions are done in TorClient::create_inner. It is also inconvenient, as it buries the guardmgr within the circmgr.
* arti-client: Treat list of exit ports as sensitive.Nick Mathewson2022-08-251-1/+2
|
* add feature annotation not added by doc_auto_cfgtrinity-1686a2022-08-241-0/+1
|
* Several typo fixes from `typos`.Nick Mathewson2022-07-271-1/+1
|
* Update arti-client to new NetDirProvider API.Nick Mathewson2022-07-261-0/+12
| | | | | | This allows us to give better errors in the case where bootstrapping succeeds at first, but fails thereafter for long enough to make our directory expire.
* arti-client: Split "Persist" into setup and access variants.Nick Mathewson2022-07-211-3/+8
|
* arti_client: turn "Proto" error into StreamFailed.Nick Mathewson2022-07-211-3/+10
|
* arti_client: Split DirMgr error into useful types.Nick Mathewson2022-07-211-4/+10
|
* arti-client: minor edits in error messages and commentsNick Mathewson2022-07-211-17/+20
|
* arti-client: Add Bug variant to errorIan Jackson2022-07-181-0/+5
| | | | We're going to want this in a moment.
* Do not include error source() in display() format.Nick Mathewson2022-06-211-8/+8
| | | | | | | | | According to doc/Errors.md, and in keeping with current best practices, we should not include display an error's `source()` as part of that error's display method. Instead, we should let the caller decide to call source() and display that error in turn. Part of #323.
* Make daemon tasks self-contained; introduce NetDirProvidereta2022-03-301-0/+5
| | | | | | | | | | | | | | | The various background daemon tasks that `arti-client` used to spawn are now handled inside their respective crates instead, with functions provided to spawn them that return `TaskHandle`s. This required introducing a new trait, `NetDirProvider`, which steals some functionality from the `DirProvider` trait to enable `tor-circmgr` to depend on it (`tor-circmgr` is a dependency of `tor-dirmgr`, so it can't depend on `DirProvider` directly). While we're at it, we also make some of the tasks wait for events from the `NetDirProvider` instead of sleeping, slightly increasing efficiency.
* Merge branch 'dir-provider-redux' into 'main'Ian Jackson2022-03-021-0/+7
|\ | | | | | | | | Alternative DirProvider setup See merge request tpo/core/arti!347
| * Add a builder function for replacing a DirProvider.Nick Mathewson2022-02-231-0/+7
| | | | | | | | Put it behind experimental_api.
* | impl From<TorAddrError> for tor_error::ErrorIan Jackson2022-02-231-0/+8
|/ | | | | It auto-converts to ErrorDetail but add this for convenience of callers which don't want to look into that unstable API.
* Rename ExitTimeout to RemoteNetworkTimeout.Nick Mathewson2022-02-171-1/+1
|
* arti_client: provide Kinds for all errors.Nick Mathewson2022-02-161-1/+10
|
* Allow creating unbootstrapped `TorClient`s (and `DirMgr`s)eta2022-02-111-1/+10
| | | | | | | | | | | | | | | This commit changes how the `TorClient` type works, enabling it to be constructed synchronously without initiating the bootstrapping process. Daemon tasks are still started on construction (although some of them won't do anything if the client isn't bootstrapped). The old bootstrap() methods are now reimplemented in terms of the new create_unbootstrapped() and bootstrap_existing() methods. This required refactoring how the `DirMgr` works to enable the same sort of thing there. closes #293
* ErrorDetail Simplify visibility macros a bit.Nick Mathewson2022-02-081-12/+53
| | | | | | | | Instead of declaring a macro that takes vis as an argument, we now conditionally declare a macro that applies an appropriate visibility. There's a long comment explaining the rationale here, along with a couple of other solutions that don't work.
* Rename TorResult to Result.Nick Mathewson2022-02-081-12/+13
| | | | | | | This is closer to common usage. (Not that we all agree with common usage, but it's closer to what people expect.)
* arti_client: Rename Error to ErrorDetail.Nick Mathewson2022-02-081-18/+12
| | | | | | | This is closer to what we described in Errors.md. Also, remove the (sometimes private) Result alias: it was only used in one or two places, and never exposed in public.
* TorError: Make detail() an accessor function.Nick Mathewson2022-02-081-4/+25
| | | | | | This change lets us make TorError's members unconditionally hidden, and makes our API a little more consistent (since basically nothing else is a public field).
* Docs and clarification for a bunch of Error stuffNick Mathewson2022-02-041-4/+27
|
* Make SpawnError wrappers contain a 'spawning' stringNick Mathewson2022-02-041-8/+18
| | | | | (By our convention, these errors should say what we were trying to spawn when the error occurred.)
* Make the Error detail type non-exported from arti-clientNick Mathewson2022-02-041-17/+5
| | | | | | | | | | | At least by default, we should have Error be private, and not expose it as part of our APIs. To keep functionality in `arti`, I had to add an `ExitTimeout` error kind. For interface consistency, I also re-exported ErrorKind and HasError from `arti_client`.
* Test that TorError implements the right traits.Nick Mathewson2022-02-041-3/+21
| | | | | I had planned to use assert_impl, but that can't check for the 'static lifetime.
* Make TorError implement Clone.Nick Mathewson2022-02-041-3/+2
| | | | | This patch makes only minimal changes in lower-level error types: we have more refactoring to do.
* errors: Add some TODOs as per discussion commentsIan Jackson2022-02-041-0/+3
|
* errors: Drop "Error" and "Failed" from various enum variantsIan Jackson2022-02-041-2/+2
|
* Box the Error in a TorErrorIan Jackson2022-02-041-2/+10
| | | | | | This will get quite large and boxing it here is very convenient. This also avoids us exposing a large error type to our callers.
* errors: Handle exit circuit creation failure the new wayIan Jackson2022-02-041-1/+18
|
* errors: Handle circmgr setup errors differentlyIan Jackson2022-02-041-3/+3
| | | | | | | | | | | | | The motivation for doing this now is to remove the `#[from]` so we would spot where operationsl circuit setup failures were handled. (But it turns out that they are turned into internal errors!) Perhaps this will want to become a different error type from circmgr in due course, but for now we simply use a bespoke variant of TorError. It will want its own Kind. The TODO in the HasKind impl marks this (amongst much else here).
* errors: Introduce error_detail featureIan Jackson2022-02-041-2/+18
| | | | | Right now we must always expose the `Error` type since we haven't converted everything.
* errors: Refer to err::Error in some bits of arti_clientIan Jackson2022-02-041-0/+3
| | | | We are going to make the top-level Error type conditionally hidden.
* errors: Introduce TorErrorIan Jackson2022-02-041-1/+28
| | | | Still much to do here.
* errors: Initial impl HasKind in arti-client, ErrorKind::TODOIan Jackson2022-02-041-0/+7
| | | | | | | | | This involves making a temporary ErrorKind::TODO. That will continue to exist until all errors (at least, the ones that make it out to here) can be properly categorised. Introducing this will let us work from the top and bottom towards the middle.
* spawn errors: Fix arti-client, tor-chanmgr, tor-circmgrIan Jackson2022-02-041-3/+10
| | | | | | | Provide an enum variant to contain the SpawnError and a From impl. We use `#[from]` here because it doesn't really make sense to attach any context, as it's not likely to be very relevant.
* Sketch API for reconfiguration.Nick Mathewson2021-12-071-0/+4
| | | | | | | This patch doesn't actually make anything reconfigurable, but it does create an API that will tell you "you can't change the value of that!" If the API looks reasonable, I can start making it possible to change the values of individual items.
* Make arti-client config object match arti config better.Nick Mathewson2021-11-211-1/+1
| | | | | | | | Now every section that the two configuration objects share has the same type and name. This should help us in documenting our configuration in a way that doesn't confuse people. There is still lots of API work to go.
* Improve top-level arti-client documentation, add example codeeta2021-10-281-1/+1
| | | | | | | | | | | | | | | | | | | | | This overhauls the top-level `arti-client` documentation significantly: - the "Using arti-client" section walks the user through all of the necessary steps to initiate a Torified TCP connection, and then provides a code example - this example is also available as `examples/readme.rs`; it's not run as a doctest, since it involves connecting to Tor - a "More advanced usage" subheading provides information about stream isolation (and can potentially be used for other interesting features once we get them). - a new "Multiple runtime support" section was added to explain the purpose and usage of the `tor-rtcompat` crate - the section on design and privacy considerations was removed; this is probably okay to keep in a README, but users of the crate aren't going to be interested in this (at least I don't think) (also, the doc comment for `arti_client::Error` was fixed to make actual sense)
* TorClient::resolve_ptr should take an IpAddr.Nick Mathewson2021-10-261-6/+0
|
* Rename tor_client/arti_tor_client to arti_client.Nick Mathewson2021-10-211-0/+71
Solves a name conflict with the existing tor_client create. Closes #130.