Browse Source

http exhaust and close response body

pull/931/head
Chris Lu 6 years ago
parent
commit
e85048bcdc
  1. 6
      weed/operation/chunked_file.go
  2. 6
      weed/server/filer_server_handlers_read.go
  3. 6
      weed/server/filer_server_handlers_write.go

6
weed/operation/chunked_file.go

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"google.golang.org/grpc" "google.golang.org/grpc"
"io" "io"
"io/ioutil"
"net/http" "net/http"
"sort" "sort"
@ -103,7 +104,10 @@ func readChunkNeedle(fileUrl string, w io.Writer, offset int64) (written int64,
if err != nil { if err != nil {
return written, err return written, err
} }
defer resp.Body.Close()
defer func() {
io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close()
}()
switch resp.StatusCode { switch resp.StatusCode {
case http.StatusRequestedRangeNotSatisfiable: case http.StatusRequestedRangeNotSatisfiable:

6
weed/server/filer_server_handlers_read.go

@ -3,6 +3,7 @@ package weed_server
import ( import (
"context" "context"
"io" "io"
"io/ioutil"
"mime" "mime"
"mime/multipart" "mime/multipart"
"net/http" "net/http"
@ -107,7 +108,10 @@ func (fs *FilerServer) handleSingleChunk(w http.ResponseWriter, r *http.Request,
writeJsonError(w, r, http.StatusInternalServerError, do_err) writeJsonError(w, r, http.StatusInternalServerError, do_err)
return return
} }
defer resp.Body.Close()
defer func() {
io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close()
}()
for k, v := range resp.Header { for k, v := range resp.Header {
w.Header()[k] = v w.Header()[k] = v
} }

6
weed/server/filer_server_handlers_write.go

@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"io"
"io/ioutil" "io/ioutil"
"mime" "mime"
"net/http" "net/http"
@ -131,7 +132,10 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) {
writeJsonError(w, r, http.StatusInternalServerError, do_err) writeJsonError(w, r, http.StatusInternalServerError, do_err)
return return
} }
defer resp.Body.Close()
defer func() {
io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close()
}()
etag := resp.Header.Get("ETag") etag := resp.Header.Get("ETag")
resp_body, ra_err := ioutil.ReadAll(resp.Body) resp_body, ra_err := ioutil.ReadAll(resp.Body)
if ra_err != nil { if ra_err != nil {

Loading…
Cancel
Save