allow ping before RemAck
This commit is contained in:
parent
a5c73993d3
commit
6f1e9836c0
@ -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)),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user