From 2b675335bd0e3845df43d0037d90bddafd588d60 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Thu, 5 Apr 2018 12:19:57 +0200 Subject: [PATCH] properly handle error case --- app/proxyman/mux/mux.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/proxyman/mux/mux.go b/app/proxyman/mux/mux.go index 802eadb5..1a35929c 100644 --- a/app/proxyman/mux/mux.go +++ b/app/proxyman/mux/mux.go @@ -203,7 +203,11 @@ func (m *Client) handleStatusKeep(meta *FrameMetadata, reader *buf.BufferedReade } if s, found := m.sessionManager.Get(meta.SessionID); found { - return buf.Copy(s.NewReader(reader), s.output, buf.IgnoreWriterError()) + if err := buf.Copy(s.NewReader(reader), s.output); err != nil { + drain(reader) + s.input.CloseError() + return s.Close() + } } return drain(reader) } @@ -359,7 +363,11 @@ func (w *ServerWorker) handleStatusKeep(meta *FrameMetadata, reader *buf.Buffere return nil } if s, found := w.sessionManager.Get(meta.SessionID); found { - return buf.Copy(s.NewReader(reader), s.output, buf.IgnoreWriterError()) + if err := buf.Copy(s.NewReader(reader), s.output); err != nil { + drain(reader) + s.input.CloseError() + return s.Close() + } } return drain(reader) }