diff --git a/protocols/relay/src/behaviour/handler.rs b/protocols/relay/src/behaviour/handler.rs index 120e980c001..20b7a01af14 100644 --- a/protocols/relay/src/behaviour/handler.rs +++ b/protocols/relay/src/behaviour/handler.rs @@ -351,19 +351,7 @@ impl IntoConnectionHandler for Prototype { // Deny all substreams on relayed connection. Either::Right(dummy::ConnectionHandler) } else { - Either::Left(Handler { - endpoint: endpoint.clone(), - config: self.config, - queued_events: Default::default(), - pending_error: Default::default(), - reservation_request_future: Default::default(), - circuit_accept_futures: Default::default(), - circuit_deny_futures: Default::default(), - alive_lend_out_substreams: Default::default(), - circuits: Default::default(), - active_reservation: Default::default(), - keep_alive: KeepAlive::Yes, - }) + Either::Left(Handler::new(self.config, endpoint.clone())) } } @@ -432,6 +420,22 @@ pub struct Handler { } impl Handler { + fn new(config: Config, endpoint: ConnectedPoint) -> Handler { + Handler { + endpoint, + config, + queued_events: Default::default(), + pending_error: Default::default(), + reservation_request_future: Default::default(), + circuit_accept_futures: Default::default(), + circuit_deny_futures: Default::default(), + alive_lend_out_substreams: Default::default(), + circuits: Default::default(), + active_reservation: Default::default(), + keep_alive: KeepAlive::Yes, + } + } + fn on_fully_negotiated_inbound( &mut self, FullyNegotiatedInbound { diff --git a/protocols/relay/src/priv_client/handler.rs b/protocols/relay/src/priv_client/handler.rs index c9f7c18adbb..922a767cf45 100644 --- a/protocols/relay/src/priv_client/handler.rs +++ b/protocols/relay/src/priv_client/handler.rs @@ -141,18 +141,11 @@ impl IntoConnectionHandler for Prototype { // Deny all substreams on relayed connection. Either::Right(dummy::ConnectionHandler) } else { - let mut handler = Handler { - remote_peer_id: *remote_peer_id, - remote_addr: endpoint.get_remote_address().clone(), - local_peer_id: self.local_peer_id, - queued_events: Default::default(), - pending_error: Default::default(), - reservation: Reservation::None, - alive_lend_out_substreams: Default::default(), - circuit_deny_futs: Default::default(), - send_error_futs: Default::default(), - keep_alive: KeepAlive::Yes, - }; + let mut handler = Handler::new( + self.local_peer_id, + *remote_peer_id, + endpoint.get_remote_address().clone(), + ); if let Some(event) = self.initial_in { handler.on_behaviour_event(event) @@ -213,6 +206,21 @@ pub struct Handler { } impl Handler { + fn new(local_peer_id: PeerId, remote_peer_id: PeerId, remote_addr: Multiaddr) -> Self { + Self { + local_peer_id, + remote_peer_id, + remote_addr, + queued_events: Default::default(), + pending_error: Default::default(), + reservation: Reservation::None, + alive_lend_out_substreams: Default::default(), + circuit_deny_futs: Default::default(), + send_error_futs: Default::default(), + keep_alive: KeepAlive::Yes, + } + } + fn on_fully_negotiated_inbound( &mut self, FullyNegotiatedInbound {