From 9de4e88ca652f5727b22201b79e705853b60ee33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Oliveirinha?= Date: Wed, 10 Aug 2022 14:21:55 +0100 Subject: [PATCH] TUN-6646: Add support to SafeStreamCloser to close only write side of stream --- quic/safe_stream.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/quic/safe_stream.go b/quic/safe_stream.go index 12ba76f4..c151ff2e 100644 --- a/quic/safe_stream.go +++ b/quic/safe_stream.go @@ -41,3 +41,14 @@ func (s *SafeStreamCloser) Close() error { s.stream.CancelRead(0) return s.stream.Close() } + +func (s *SafeStreamCloser) CloseWrite() error { + s.lock.Lock() + defer s.lock.Unlock() + + // As documented by the quic-go library, this doesn't actually close the entire stream. + // It prevents further writes, which in turn will result in an EOF signal being sent the other side of stream when + // reading. + // We can still read from this stream. + return s.stream.Close() +}