aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-04-14 23:28:24 -0700
committerChris Lu <chris.lu@gmail.com>2019-04-14 23:28:24 -0700
commite85048bcdc7a56c0ec9353f0459737481eb1c48d (patch)
tree1e76d79adc992068e8f88064805aac06ad6e33ba
parent3e8a3a8fec6df5b39b6b2b4603df8bc183d90aa8 (diff)
downloadseaweedfs-e85048bcdc7a56c0ec9353f0459737481eb1c48d.tar.xz
seaweedfs-e85048bcdc7a56c0ec9353f0459737481eb1c48d.zip
http exhaust and close response body
-rw-r--r--weed/operation/chunked_file.go6
-rw-r--r--weed/server/filer_server_handlers_read.go6
-rw-r--r--weed/server/filer_server_handlers_write.go6
3 files changed, 15 insertions, 3 deletions
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 {