Allow multiple pings over one connection (#1416)

* Allow multiple pings over one connection

This is so that pinging a rust-libp2p node from ipfs works even without passing -n 1

* Remove timeout
This commit is contained in:
Rüdiger Klaehn 2020-02-04 10:28:00 +01:00 committed by GitHub
parent 44b5e3e176
commit dd0c5c37f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -44,6 +44,8 @@ use wasm_timer::Instant;
#[derive(Default, Debug, Copy, Clone)]
pub struct Ping;
const PING_SIZE: usize = 32;
impl UpgradeInfo for Ping {
type Info = &'static [u8];
type InfoIter = iter::Once<Self::Info>;
@ -63,10 +65,10 @@ where
fn upgrade_inbound(self, mut socket: TSocket, _: Self::Info) -> Self::Future {
async move {
let mut payload = [0u8; 32];
socket.read_exact(&mut payload).await?;
let mut payload = [0u8; PING_SIZE];
while let Ok(_) = socket.read_exact(&mut payload).await {
socket.write_all(&payload).await?;
socket.close().await?;
}
Ok(())
}.boxed()
}