From a5baa39014f87d65026f823658c9a39a13a22ec9 Mon Sep 17 00:00:00 2001 From: Tangent 128 Date: Mon, 21 Oct 2019 17:11:09 -0400 Subject: [PATCH] Fix server kicking clients off when a source left --- src/channel.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/channel.rs b/src/channel.rs index 9e901de..deb921b 100644 --- a/src/channel.rs +++ b/src/channel.rs @@ -91,16 +91,9 @@ impl Sink for Transmitter { } fn poll_close(self: Pin<&mut Self>, cx: &mut Context) -> Poll> { - 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) } }