From c7dcef59201d8562440ee05b23665918ac3fdac8 Mon Sep 17 00:00:00 2001 From: Scott Norvell Date: Tue, 20 Jun 2023 16:44:09 -0400 Subject: [PATCH] catch EOF errors, log all else --- relay/traffic/handler.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/relay/traffic/handler.go b/relay/traffic/handler.go index 40cb9fd..0a45466 100644 --- a/relay/traffic/handler.go +++ b/relay/traffic/handler.go @@ -3,6 +3,7 @@ package traffic import ( "bytes" "crypto/tls" + "errors" "fmt" "io" "log" @@ -139,7 +140,10 @@ func (handler *Handler) handleHttp(clientResponse http.ResponseWriter, clientReq if _, err := io.CopyN(clientResponse, targetResponse.Body, handler.config.MaxBodySize); err != nil { // NOTE: it is highly likely the server would come back without a content-length especially with // mobile traffic. In this case, full copy happens but we get an EOF error that can be safely - // ignored. See this example: https://go.dev/play/p/8T3kbRfk_vO + // ignored. See this example: https://go.dev/play/p/xotsgkwhJis + if !errors.Is(err, io.EOF) { + logger.Printf("Error relaying response body with unknown content-length: %s", err) + } } } else { clientResponse.WriteHeader(targetResponse.StatusCode)