From a5baa39014f87d65026f823658c9a39a13a22ec9 Mon Sep 17 00:00:00 2001
From: Tangent 128 <Tangent128@gmail.com>
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<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)
     }
 }