mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-28 09:11:34 +00:00
[ping] Add missing flush after write. (#1770)
After sending the ping and before awaiting the pong, the stream must be flushed to guarantee the data is sent before awaiting the reply.
This commit is contained in:
@ -87,8 +87,10 @@ where
|
||||
let payload: [u8; PING_SIZE] = thread_rng().sample(distributions::Standard);
|
||||
log::debug!("Preparing ping payload {:?}", payload);
|
||||
stream.write_all(&payload).await?;
|
||||
stream.flush().await?;
|
||||
let started = Instant::now();
|
||||
let mut recv_payload = [0u8; PING_SIZE];
|
||||
log::debug!("Awaiting pong for {:?}", payload);
|
||||
stream.read_exact(&mut recv_payload).await?;
|
||||
if recv_payload == payload {
|
||||
Ok((stream, started.elapsed()))
|
||||
@ -103,7 +105,9 @@ where
|
||||
S: AsyncRead + AsyncWrite + Unpin
|
||||
{
|
||||
let mut payload = [0u8; PING_SIZE];
|
||||
log::debug!("Waiting for ping ...");
|
||||
stream.read_exact(&mut payload).await?;
|
||||
log::debug!("Sending pong for {:?}", payload);
|
||||
stream.write_all(&payload).await?;
|
||||
stream.flush().await?;
|
||||
Ok(stream)
|
||||
|
Reference in New Issue
Block a user