Unhelpful error messages when deserializing configuration fails
When you try to start Arti with this configuration file:
[proxy]
socks_listen = "fred"
You get an not-so-helpful error message:
./target/quicktest/arti: error: read configuration: Config contents not as expected: Invalid listen specification: failed to parse string: invalid socket address syntax
Note that it doesn't mention proxy.socks_listen
, or "fred"
!
Under the hood, this is:
anyhow::Error {
context: "read configuration",
source: tor_config::ConfigResolveError::Deserialize(
config::ConfigError::Message(
"Invalid listen specification: failed to parse string: invalid socket address syntax",
),
),
}
The inner "invalid listen specification:…" string was apparently Display
ed from a tor_config::misc::InvalidListen::InvalidString
. That latter error was constructed when we tried to deserialize a tor_config::misc::Listen
.
I hope that this doesn't require major serde shenanigans.