Fix server kicking clients off when a source left

This commit is contained in:
Tangent 128 2019-10-21 17:11:09 -04:00
parent 32c72e1ee8
commit a5baa39014
1 changed files with 3 additions and 10 deletions

View File

@ -91,16 +91,9 @@ impl Sink<Chunk> for Transmitter {
}
fn poll_close(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Result<(), Never>> {
let mut channel = self.channel.lock().expect("Locking channel");
// there's no useful error we can offer here, just give everything a chance to try closing
channel.listeners.retain_mut(|listener| Pin::new(listener).poll_close(cx).is_pending());
return if channel.listeners.len() > 0 {
Poll::Pending
} else {
Poll::Ready(Ok(()))
}
// don't actually disconnect listeners, since other sources may want to transmit to this channel;
// just ensure we've sent everything we can out
self.poll_flush(cx)
}
}