mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-12 09:31:20 +00:00
feat: don't report inbound stream upgrade errors to handler
When an inbound stream upgrade fails, there isn't a whole lot we can do about that in the handler. In fact, for several errors, we wouldn't even know which specific handler to target, for example, `NegotiationFailed`. Similiarly, in case of an IO error during the upgrade, we don't know which handler the stream was eventually meant to be for. Pull-Request: #3605.
This commit is contained in:
@ -150,10 +150,6 @@ pub enum Event {
|
||||
},
|
||||
/// An inbound reservation has timed out.
|
||||
ReservationTimedOut { src_peer_id: PeerId },
|
||||
CircuitReqReceiveFailed {
|
||||
src_peer_id: PeerId,
|
||||
error: ConnectionHandlerUpgrErr<void::Void>,
|
||||
},
|
||||
/// An inbound circuit request has been denied.
|
||||
CircuitReqDenied {
|
||||
src_peer_id: PeerId,
|
||||
@ -537,15 +533,6 @@ impl NetworkBehaviour for Behaviour {
|
||||
};
|
||||
self.queued_actions.push_back(action.into());
|
||||
}
|
||||
handler::Event::CircuitReqReceiveFailed { error } => {
|
||||
self.queued_actions.push_back(
|
||||
ToSwarm::GenerateEvent(Event::CircuitReqReceiveFailed {
|
||||
src_peer_id: event_source,
|
||||
error,
|
||||
})
|
||||
.into(),
|
||||
);
|
||||
}
|
||||
handler::Event::CircuitReqDenied {
|
||||
circuit_id,
|
||||
dst_peer_id,
|
||||
|
@ -163,10 +163,6 @@ pub enum Event {
|
||||
inbound_circuit_req: inbound_hop::CircuitReq,
|
||||
endpoint: ConnectedPoint,
|
||||
},
|
||||
/// Receiving an inbound circuit request failed.
|
||||
CircuitReqReceiveFailed {
|
||||
error: ConnectionHandlerUpgrErr<void::Void>,
|
||||
},
|
||||
/// An inbound circuit request has been denied.
|
||||
CircuitReqDenied {
|
||||
circuit_id: Option<CircuitId>,
|
||||
@ -252,10 +248,6 @@ impl fmt::Debug for Event {
|
||||
.debug_struct("Event::CircuitReqReceived")
|
||||
.field("endpoint", endpoint)
|
||||
.finish(),
|
||||
Event::CircuitReqReceiveFailed { error } => f
|
||||
.debug_struct("Event::CircuitReqReceiveFailed")
|
||||
.field("error", error)
|
||||
.finish(),
|
||||
Event::CircuitReqDenied {
|
||||
circuit_id,
|
||||
dst_peer_id,
|
||||
@ -471,41 +463,16 @@ impl Handler {
|
||||
|
||||
fn on_listen_upgrade_error(
|
||||
&mut self,
|
||||
ListenUpgradeError { error, .. }: ListenUpgradeError<
|
||||
ListenUpgradeError {
|
||||
error: inbound_hop::UpgradeError::Fatal(error),
|
||||
..
|
||||
}: ListenUpgradeError<
|
||||
<Self as ConnectionHandler>::InboundOpenInfo,
|
||||
<Self as ConnectionHandler>::InboundProtocol,
|
||||
>,
|
||||
) {
|
||||
let non_fatal_error = match error {
|
||||
ConnectionHandlerUpgrErr::Timeout => ConnectionHandlerUpgrErr::Timeout,
|
||||
ConnectionHandlerUpgrErr::Timer => ConnectionHandlerUpgrErr::Timer,
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)) => ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)),
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::ProtocolError(e),
|
||||
)) => {
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Select(upgrade::NegotiationError::ProtocolError(e)),
|
||||
));
|
||||
return;
|
||||
}
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Apply(
|
||||
inbound_hop::UpgradeError::Fatal(error),
|
||||
)) => {
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Apply(Either::Left(error)),
|
||||
));
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
self.queued_events.push_back(ConnectionHandlerEvent::Custom(
|
||||
Event::CircuitReqReceiveFailed {
|
||||
error: non_fatal_error,
|
||||
},
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Apply(Either::Left(error)),
|
||||
));
|
||||
}
|
||||
|
||||
@ -524,10 +491,6 @@ impl Handler {
|
||||
ConnectionHandlerUpgrErr::Timeout,
|
||||
proto::Status::CONNECTION_FAILED,
|
||||
),
|
||||
ConnectionHandlerUpgrErr::Timer => (
|
||||
ConnectionHandlerUpgrErr::Timer,
|
||||
proto::Status::CONNECTION_FAILED,
|
||||
),
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)) => {
|
||||
|
@ -79,10 +79,6 @@ pub enum Event {
|
||||
src_peer_id: PeerId,
|
||||
limit: Option<protocol::Limit>,
|
||||
},
|
||||
InboundCircuitReqFailed {
|
||||
relay_peer_id: PeerId,
|
||||
error: ConnectionHandlerUpgrErr<void::Void>,
|
||||
},
|
||||
/// An inbound circuit request has been denied.
|
||||
InboundCircuitReqDenied { src_peer_id: PeerId },
|
||||
/// Denying an inbound circuit request failed.
|
||||
@ -282,10 +278,6 @@ impl NetworkBehaviour for Behaviour {
|
||||
handler::Event::InboundCircuitEstablished { src_peer_id, limit } => {
|
||||
Event::InboundCircuitEstablished { src_peer_id, limit }
|
||||
}
|
||||
handler::Event::InboundCircuitReqFailed { error } => Event::InboundCircuitReqFailed {
|
||||
relay_peer_id: event_source,
|
||||
error,
|
||||
},
|
||||
handler::Event::InboundCircuitReqDenied { src_peer_id } => {
|
||||
Event::InboundCircuitReqDenied { src_peer_id }
|
||||
}
|
||||
|
@ -97,10 +97,6 @@ pub enum Event {
|
||||
src_peer_id: PeerId,
|
||||
limit: Option<protocol::Limit>,
|
||||
},
|
||||
/// An inbound circuit request has failed.
|
||||
InboundCircuitReqFailed {
|
||||
error: ConnectionHandlerUpgrErr<void::Void>,
|
||||
},
|
||||
/// An inbound circuit request has been denied.
|
||||
InboundCircuitReqDenied { src_peer_id: PeerId },
|
||||
/// Denying an inbound circuit request failed.
|
||||
@ -295,41 +291,16 @@ impl Handler {
|
||||
|
||||
fn on_listen_upgrade_error(
|
||||
&mut self,
|
||||
ListenUpgradeError { error, .. }: ListenUpgradeError<
|
||||
ListenUpgradeError {
|
||||
error: inbound_stop::UpgradeError::Fatal(error),
|
||||
..
|
||||
}: ListenUpgradeError<
|
||||
<Self as ConnectionHandler>::InboundOpenInfo,
|
||||
<Self as ConnectionHandler>::InboundProtocol,
|
||||
>,
|
||||
) {
|
||||
let non_fatal_error = match error {
|
||||
ConnectionHandlerUpgrErr::Timeout => ConnectionHandlerUpgrErr::Timeout,
|
||||
ConnectionHandlerUpgrErr::Timer => ConnectionHandlerUpgrErr::Timer,
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)) => ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)),
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::ProtocolError(e),
|
||||
)) => {
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Select(upgrade::NegotiationError::ProtocolError(e)),
|
||||
));
|
||||
return;
|
||||
}
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Apply(
|
||||
inbound_stop::UpgradeError::Fatal(error),
|
||||
)) => {
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Apply(Either::Left(error)),
|
||||
));
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
self.queued_events.push_back(ConnectionHandlerEvent::Custom(
|
||||
Event::InboundCircuitReqFailed {
|
||||
error: non_fatal_error,
|
||||
},
|
||||
self.pending_error = Some(ConnectionHandlerUpgrErr::Upgrade(
|
||||
upgrade::UpgradeError::Apply(Either::Left(error)),
|
||||
));
|
||||
}
|
||||
|
||||
@ -347,7 +318,6 @@ impl Handler {
|
||||
OutboundOpenInfo::Reserve { mut to_listener } => {
|
||||
let non_fatal_error = match error {
|
||||
ConnectionHandlerUpgrErr::Timeout => ConnectionHandlerUpgrErr::Timeout,
|
||||
ConnectionHandlerUpgrErr::Timer => ConnectionHandlerUpgrErr::Timer,
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)) => ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
@ -410,7 +380,6 @@ impl Handler {
|
||||
OutboundOpenInfo::Connect { send_back } => {
|
||||
let non_fatal_error = match error {
|
||||
ConnectionHandlerUpgrErr::Timeout => ConnectionHandlerUpgrErr::Timeout,
|
||||
ConnectionHandlerUpgrErr::Timer => ConnectionHandlerUpgrErr::Timer,
|
||||
ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
upgrade::NegotiationError::Failed,
|
||||
)) => ConnectionHandlerUpgrErr::Upgrade(upgrade::UpgradeError::Select(
|
||||
|
Reference in New Issue
Block a user