diff --git a/p2p/transport/quic/stream.go b/p2p/transport/quic/stream.go index e757de20dd..313ea227ec 100644 --- a/p2p/transport/quic/stream.go +++ b/p2p/transport/quic/stream.go @@ -6,14 +6,36 @@ import ( quic "github.com/lucas-clemente/quic-go" ) +const ( + reset quic.ErrorCode = 0 +) + type stream struct { quic.Stream } -var _ mux.MuxedStream = &stream{} +func (s *stream) Read(b []byte) (n int, err error) { + n, err = s.Stream.Read(b) + if serr, ok := err.(quic.StreamError); ok && serr.Canceled() { + err = mux.ErrReset + } + + return n, err +} + +func (s *stream) Write(b []byte) (n int, err error) { + n, err = s.Stream.Write(b) + if serr, ok := err.(quic.StreamError); ok && serr.Canceled() { + err = mux.ErrReset + } + + return n, err +} func (s *stream) Reset() error { - s.Stream.CancelRead(0) - s.Stream.CancelWrite(0) + s.Stream.CancelRead(reset) + s.Stream.CancelWrite(reset) return nil } + +var _ mux.MuxedStream = &stream{}