mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'netfix4' into 'master'
Fix a isse that might occur when a participant is dropped while the remote... See merge request veloren/veloren!1290
This commit is contained in:
commit
3c199280e8
@ -331,12 +331,19 @@ impl BParticipant {
|
||||
prio,
|
||||
promises,
|
||||
} => {
|
||||
trace!(?sid, ?prio, ?promises, "Opened frame from remote");
|
||||
let a2p_msg_s = a2p_msg_s.clone();
|
||||
let stream = self
|
||||
.create_stream(sid, prio, promises, a2p_msg_s, &a2b_close_stream_s)
|
||||
.await;
|
||||
b2a_stream_opened_s.send(stream).await.unwrap();
|
||||
trace!("Opened frame from remote");
|
||||
if let Err(e) = b2a_stream_opened_s.send(stream).await {
|
||||
warn!(
|
||||
?e,
|
||||
?sid,
|
||||
"couldn't notify api::Participant that a stream got opened. Is the \
|
||||
participant already dropped?"
|
||||
);
|
||||
}
|
||||
},
|
||||
Frame::CloseStream { sid } => {
|
||||
// Closing is realised by setting a AtomicBool to true, however we also have a
|
||||
|
@ -638,6 +638,7 @@ impl Server {
|
||||
) -> Result<(), Error> {
|
||||
//TIMEOUT 0.1 ms for msg handling
|
||||
const TIMEOUT: Duration = Duration::from_micros(100);
|
||||
const SLOWLORIS_TIMEOUT: Duration = Duration::from_millis(300);
|
||||
loop {
|
||||
let participant = match select!(
|
||||
_ = Delay::new(TIMEOUT).fuse() => None,
|
||||
@ -649,7 +650,7 @@ impl Server {
|
||||
debug!("New Participant connected to the server");
|
||||
|
||||
let singleton_stream = match select!(
|
||||
_ = Delay::new(TIMEOUT*100).fuse() => None,
|
||||
_ = Delay::new(SLOWLORIS_TIMEOUT).fuse() => None,
|
||||
sr = participant.opened().fuse() => Some(sr),
|
||||
) {
|
||||
None => {
|
||||
|
Loading…
Reference in New Issue
Block a user