diff --git a/zebra-network/src/peer/connector.rs b/zebra-network/src/peer/connector.rs index cb49fa5e..b736a09d 100644 --- a/zebra-network/src/peer/connector.rs +++ b/zebra-network/src/peer/connector.rs @@ -68,7 +68,8 @@ where { type Response = PeerClient; type Error = HandshakeError; - type Future = Pin>>>; + type Future = + Pin> + Send + 'static>>; fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll> { Poll::Ready(Ok(())) diff --git a/zebrad/src/commands/connect.rs b/zebrad/src/commands/connect.rs index df8b9b8a..4ff64f42 100644 --- a/zebrad/src/commands/connect.rs +++ b/zebrad/src/commands/connect.rs @@ -80,8 +80,11 @@ impl ConnectCmd { let mut pc = PeerConnector::new(config, Network::Mainnet, node, &collector); let tcp_stream = TcpStream::connect(self.addr).await?; - pc.ready().await?; - let mut client = pc.call((tcp_stream, self.addr)).await?; + pc.ready() + .await?; + let mut client = pc + .call((tcp_stream, self.addr)) + .await?; client.ready().await?; diff --git a/zebrad/src/commands/listen.rs b/zebrad/src/commands/listen.rs index 8c60162d..930d2777 100644 --- a/zebrad/src/commands/listen.rs +++ b/zebrad/src/commands/listen.rs @@ -71,18 +71,27 @@ impl ListenCmd { ); use tokio::net::{TcpListener, TcpStream}; + use tokio::prelude::*; let config = app_config().network.clone(); let collector = TimestampCollector::new(); - let mut pc = PeerConnector::new(config, Network::Mainnet, node, &collector); + let mut pc = Buffer::new( + PeerConnector::new(config, Network::Mainnet, node, &collector), + 1, + ); let mut listener = TcpListener::bind(self.addr).await?; loop { let (tcp_stream, addr) = listener.accept().await?; - pc.ready().await?; - let mut client = pc.call((tcp_stream, addr)).await?; + pc.ready() + .await + .map_err(failure::Error::from_boxed_compat)?; + let mut client = pc + .call((tcp_stream, addr)) + .await + .map_err(failure::Error::from_boxed_compat)?; let addrs = match client.call(Request::GetPeers).await? { Response::Peers(addrs) => addrs,