diff options
| author | divinerapier <poriter.coco@gmail.com> | 2019-12-26 11:28:43 +0800 |
|---|---|---|
| committer | divinerapier <poriter.coco@gmail.com> | 2019-12-26 11:28:43 +0800 |
| commit | 4cbb6fa1992f0ef4ab3d96772752a81ae2e12f90 (patch) | |
| tree | c711859af409ee8e2d28c47051f4c6e8d608a4fa | |
| parent | 84640d07b78422e46d58f5c2dcee6b1e86581e9b (diff) | |
| download | seaweedfs-4cbb6fa1992f0ef4ab3d96772752a81ae2e12f90.tar.xz seaweedfs-4cbb6fa1992f0ef4ab3d96772752a81ae2e12f90.zip | |
feat: drains http body if buffer is too small
Signed-off-by: divinerapier <poriter.coco@gmail.com>
| -rw-r--r-- | weed/util/http_util.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/weed/util/http_util.go b/weed/util/http_util.go index 025cdee7b..684b4d247 100644 --- a/weed/util/http_util.go +++ b/weed/util/http_util.go @@ -235,8 +235,16 @@ func ReadUrl(fileUrl string, offset int64, size int, buf []byte, isReadRange boo if err != nil { return n, err } + if n == int64(len(buf)) { + break + } } - + // drains the response body to avoid memory leak + data, err := ioutil.ReadAll(reader) + if len(data) != 0 { + err = fmt.Errorf("buffer size is too small. remains %d", len(data)) + } + return n, err } func ReadUrlAsStream(fileUrl string, offset int64, size int, fn func(data []byte)) (int64, error) { |
