allow ping before RemAck

This commit is contained in:
soruh 2023-03-20 15:46:34 +01:00
parent a5c73993d3
commit 6f1e9836c0

View File

@ -346,43 +346,50 @@ pub async fn handler(
return Ok(()); return Ok(());
}; };
let recv = timeout( let notify_at = Instant::now();
CALL_ACK_TIMEOUT,
packet.recv_into_cancelation_safe(&mut reader),
);
let Ok(res) = recv.await else { loop {
writer.write_all(REJECT_TIMEOUT).await?; let recv = timeout(
return Ok(()); CALL_ACK_TIMEOUT.saturating_sub(notify_at.elapsed()),
}; packet.recv_into_cancelation_safe(&mut reader),
res?; );
match packet.kind() { let Ok(res) = recv.await else {
PacketKind::End | PacketKind::Reject => { writer.write_all(REJECT_TIMEOUT).await?;
port_handler.lock().await.start_rejector( return Ok(());
port, };
handler_metadata res?;
.listener
.take()
.expect("tried to start rejector twice"),
packet,
);
Ok(()) match packet.kind() {
PacketKind::Ping => {}
PacketKind::End | PacketKind::Reject => {
port_handler.lock().await.start_rejector(
port,
handler_metadata
.listener
.take()
.expect("tried to start rejector twice"),
packet,
);
return Ok(());
}
PacketKind::RemAck => {
connect(
packet,
port_handler,
port,
handler_metadata,
client,
&mut caller,
)
.await?;
return Ok(());
}
kind => return Err(eyre!("unexpected packet: {:?}", kind)),
} }
PacketKind::RemAck => {
connect(
packet,
port_handler,
port,
handler_metadata,
client,
&mut caller,
)
.await
}
kind => Err(eyre!("unexpected packet: {:?}", kind)),
} }
} }