From b3931dfb7bc580020ab95e04f62a414a211cfea7 Mon Sep 17 00:00:00 2001 From: Junpei Kawamoto Date: Wed, 8 Sep 2021 20:06:22 -0600 Subject: [PATCH] Stop preparing the request if an error occurs request.buildHTTP closes the writer but keeps preparing the request if an error occurs. Since the writer is already closed, other following write operations also fail. This commit changes this behaviour so that the function returns earlier and stop the preparation. Signed-off-by: Junpei Kawamoto --- client/request.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/request.go b/client/request.go index 0329ccff..079911f2 100644 --- a/client/request.go +++ b/client/request.go @@ -139,6 +139,7 @@ func (r *request) buildHTTP(mediaType, basePath string, producers map[string]run if err := mp.WriteField(fn, vi); err != nil { pw.CloseWithError(err) log.Println(err) + return } } } @@ -158,6 +159,7 @@ func (r *request) buildHTTP(mediaType, basePath string, producers map[string]run if err != nil { _ = pw.CloseWithError(err) log.Println(err) + return } fileContentType := http.DetectContentType(buf) newFi := runtime.NamedReader(fi.Name(), io.MultiReader(bytes.NewReader(buf[:size]), fi)) @@ -173,7 +175,9 @@ func (r *request) buildHTTP(mediaType, basePath string, producers map[string]run if err != nil { pw.CloseWithError(err) log.Println(err) - } else if _, err := io.Copy(wrtr, newFi); err != nil { + return + } + if _, err := io.Copy(wrtr, newFi); err != nil { pw.CloseWithError(err) log.Println(err) }