mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-07-04 20:21:33 +00:00
feat: Better error reporting when features are disabled (#2972)
In case support for e.g. RSA keys is disabled at compile-time, we will now print a better error message. For example: > Failed to dial Some(PeerId("QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt")): Failed to negotiate transport protocol(s): [(/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt): : Handshake failed: Handshake failed: Invalid public key: Key decoding error: RSA keys are unsupported)] Fixes #2971.
This commit is contained in:
@ -31,17 +31,61 @@ pub struct DecodingError {
|
||||
}
|
||||
|
||||
impl DecodingError {
|
||||
pub(crate) fn new<S: ToString>(msg: S) -> Self {
|
||||
#[cfg(not(all(
|
||||
feature = "ecdsa",
|
||||
feature = "rsa",
|
||||
feature = "secp256k1",
|
||||
not(target_arch = "wasm32")
|
||||
)))]
|
||||
pub(crate) fn missing_feature(feature_name: &'static str) -> Self {
|
||||
Self {
|
||||
msg: msg.to_string(),
|
||||
msg: format!("cargo feature `{feature_name}` is not enabled"),
|
||||
source: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn source(self, source: impl Error + Send + Sync + 'static) -> Self {
|
||||
pub(crate) fn failed_to_parse<E, S>(what: &'static str, source: S) -> Self
|
||||
where
|
||||
E: Error + Send + Sync + 'static,
|
||||
S: Into<Option<E>>,
|
||||
{
|
||||
Self {
|
||||
msg: format!("failed to parse {what}"),
|
||||
source: match source.into() {
|
||||
None => None,
|
||||
Some(e) => Some(Box::new(e)),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn bad_protobuf(
|
||||
what: &'static str,
|
||||
source: impl Error + Send + Sync + 'static,
|
||||
) -> Self {
|
||||
Self {
|
||||
msg: format!("failed to decode {what} from protobuf"),
|
||||
source: Some(Box::new(source)),
|
||||
..self
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn unknown_key_type(key_type: i32) -> Self {
|
||||
Self {
|
||||
msg: format!("unknown key-type {key_type}"),
|
||||
source: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn decoding_unsupported(key_type: &'static str) -> Self {
|
||||
Self {
|
||||
msg: format!("decoding {key_type} key from Protobuf is unsupported"),
|
||||
source: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn encoding_unsupported(key_type: &'static str) -> Self {
|
||||
Self {
|
||||
msg: format!("encoding {key_type} key to Protobuf is unsupported"),
|
||||
source: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user