Skip to content

Commit 3eedf3b

Browse files
authored
Handle EOF from multipart form file readers (#438)
1 parent b8f7c11 commit 3eedf3b

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func writeMultipartFormFile(w *multipart.Writer, fieldName, fileName string, r i
202202
// Auto detect actual multipart content type
203203
cbuf := make([]byte, 512)
204204
size, err := r.Read(cbuf)
205-
if err != nil {
205+
if err != nil && err != io.EOF {
206206
return err
207207
}
208208

util_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
package resty
66

77
import (
8+
"bytes"
9+
"mime/multipart"
810
"testing"
911
)
1012

@@ -79,3 +81,17 @@ func TestIsXMLType(t *testing.T) {
7981
}
8082
}
8183
}
84+
85+
func TestWriteMultipartFormFileReaderEmpty(t *testing.T) {
86+
w := multipart.NewWriter(bytes.NewBuffer(nil))
87+
defer func() { _ = w.Close() }()
88+
if err := writeMultipartFormFile(w, "foo", "bar", bytes.NewReader(nil)); err != nil {
89+
t.Errorf("Got unexpected error: %v", err)
90+
}
91+
}
92+
93+
func TestWriteMultipartFormFileReaderError(t *testing.T) {
94+
err := writeMultipartFormFile(nil, "", "", &brokenReadCloser{})
95+
assertNotNil(t, err)
96+
assertEqual(t, "read error", err.Error())
97+
}

0 commit comments

Comments
 (0)