diff --git a/gzhttp/compress.go b/gzhttp/compress.go index b8df6a2fa..0a40572be 100644 --- a/gzhttp/compress.go +++ b/gzhttp/compress.go @@ -465,12 +465,9 @@ func NewWrapper(opts ...option) (func(http.Handler) http.HandlerFunc, error) { return func(w http.ResponseWriter, r *http.Request) { w.Header().Add(vary, acceptEncoding) if contentGzip(r) { - readerGzipBody, err := gzip.NewReader(r.Body) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return + if readerGzipBody, err := gzip.NewReader(r.Body); err == nil { + r.Body = io.NopCloser(readerGzipBody) } - r.Body = io.NopCloser(readerGzipBody) } if acceptsGzip(r) { diff --git a/gzhttp/compress_test.go b/gzhttp/compress_test.go index 74ccebc9e..c844b7653 100644 --- a/gzhttp/compress_test.go +++ b/gzhttp/compress_test.go @@ -90,16 +90,6 @@ func TestMustNewGzipHandler(t *testing.T) { assertEqual(t, http.DetectContentType([]byte(testBody)), res3.Header().Get("Content-Type")) - // send not compress request body - - req4, _ := http.NewRequest("POST", "/whatever", bytes.NewBuffer(testBody)) - req4.Header.Set("Content-Encoding", "gzip") - resp4 := httptest.NewRecorder() - handler.ServeHTTP(resp4, req4) - res4 := resp4.Result() - - assertEqual(t, 400, res4.StatusCode) - // send compress request body var b bytes.Buffer