diff --git a/weed/operation/chunked_file.go b/weed/operation/chunked_file.go index f3f6e7b00..995f06b53 100644 --- a/weed/operation/chunked_file.go +++ b/weed/operation/chunked_file.go @@ -6,6 +6,7 @@ import ( "fmt" "google.golang.org/grpc" "io" + "io/ioutil" "net/http" "sort" @@ -103,7 +104,10 @@ func readChunkNeedle(fileUrl string, w io.Writer, offset int64) (written int64, if err != nil { return written, err } - defer resp.Body.Close() + defer func() { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + }() switch resp.StatusCode { case http.StatusRequestedRangeNotSatisfiable: diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go index 63fd2cc39..9ddf4dae5 100644 --- a/weed/server/filer_server_handlers_read.go +++ b/weed/server/filer_server_handlers_read.go @@ -3,6 +3,7 @@ package weed_server import ( "context" "io" + "io/ioutil" "mime" "mime/multipart" "net/http" @@ -107,7 +108,10 @@ func (fs *FilerServer) handleSingleChunk(w http.ResponseWriter, r *http.Request, writeJsonError(w, r, http.StatusInternalServerError, do_err) return } - defer resp.Body.Close() + defer func() { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + }() for k, v := range resp.Header { w.Header()[k] = v } diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go index cb30ff4c0..92f5f19b6 100644 --- a/weed/server/filer_server_handlers_write.go +++ b/weed/server/filer_server_handlers_write.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "io" "io/ioutil" "mime" "net/http" @@ -131,7 +132,10 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) { writeJsonError(w, r, http.StatusInternalServerError, do_err) return } - defer resp.Body.Close() + defer func() { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + }() etag := resp.Header.Get("ETag") resp_body, ra_err := ioutil.ReadAll(resp.Body) if ra_err != nil {