Enum SendError
pub enum SendError {
Secp256k1(Error),
TooBigPacket,
TooFewBlindedHops,
InvalidFirstHop(PublicKey),
PathNotFound,
InvalidMessage,
BufferFull,
GetNodeIdFailed,
UnresolvedIntroductionNode,
BlindedPathAdvanceFailed,
}Expand description
Errors that may occur when sending an onion message.
Variants§
Secp256k1(Error)
Errored computing onion message packet keys.
TooBigPacket
Because implementations such as Eclair will drop onion messages where the message packet exceeds 32834 bytes, we refuse to send messages where the packet exceeds this size.
TooFewBlindedHops
The provided Destination was an invalid BlindedMessagePath due to not having any
blinded hops.
InvalidFirstHop(PublicKey)
The first hop is not a peer and doesn’t have a known SocketAddress.
PathNotFound
Indicates that a path could not be found by the MessageRouter.
This occurs when either:
- No path from the sender to the destination was found to send the onion message
- No reply path to the sender could be created when responding to an onion message
InvalidMessage
Onion message contents must have a TLV type >= 64.
BufferFull
Our next-hop peer’s buffer was full or our total outbound buffer was full.
GetNodeIdFailed
Failed to retrieve our node id from the provided NodeSigner.
UnresolvedIntroductionNode
The provided Destination has a blinded path with an unresolved introduction node. An
attempt to resolve it in the MessageRouter when finding an OnionMessagePath likely
failed.
BlindedPathAdvanceFailed
We attempted to send to a blinded path where we are the introduction node, and failed to
advance the blinded path to make the second hop the new introduction node. Either
NodeSigner::ecdh failed, we failed to tweak the current blinding point to get the
new blinding point, or we were attempting to send to ourselves.
Trait Implementations§
impl Eq for SendError
impl StructuralPartialEq for SendError
Auto Trait Implementations§
impl Freeze for SendError
impl RefUnwindSafe for SendError
impl Send for SendError
impl Sync for SendError
impl Unpin for SendError
impl UnwindSafe for SendError
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request