Преглед на файлове

properly handle error case

Darien Raymond преди 7 години
родител
ревизия
2b675335bd
променени са 1 файла, в които са добавени 10 реда и са изтрити 2 реда
  1. 10 2
      app/proxyman/mux/mux.go

+ 10 - 2
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)
 }