diff --git a/lib/src/util/multi_channel.dart b/lib/src/util/multi_channel.dart
index 34358488a80ae9de5b0bcfd64ab067e9e45cb521..66236cde8ca7a74d29dfa95dc0dc553db58c83f6 100644
--- a/lib/src/util/multi_channel.dart
+++ b/lib/src/util/multi_channel.dart
@@ -202,7 +202,7 @@ class _MultiChannel extends StreamChannelMixin implements MultiChannel {
   /// outgoing messages have [outputId].
   void _closeChannel(int inputId, int outputId) {
     if (_closed) return;
-    _closed = true;
+    _closed = inputId == 0;
 
     // A message without data indicates that the virtual channel has been
     // closed.