From 82dff5fbd082a6b99daa6e75f8bac6cb75fb5a3c Mon Sep 17 00:00:00 2001 From: sakeven Date: Fri, 30 Jun 2017 18:33:17 +0800 Subject: [PATCH] HTTPExtender: shoud close resp.Body even when StatusCode not ok Signed-off-by: sakeven --- plugin/pkg/scheduler/core/extender.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/plugin/pkg/scheduler/core/extender.go b/plugin/pkg/scheduler/core/extender.go index 6c24cf00cd3..898ef4f4525 100644 --- a/plugin/pkg/scheduler/core/extender.go +++ b/plugin/pkg/scheduler/core/extender.go @@ -20,8 +20,8 @@ import ( "bytes" "encoding/json" "fmt" - "io/ioutil" "net/http" + "strings" "time" "k8s.io/api/core/v1" @@ -229,7 +229,7 @@ func (h *HTTPExtender) send(action string, args interface{}, result interface{}) return err } - url := h.extenderURL + "/" + action + url := strings.TrimRight(h.extenderURL, "/") + "/" + action req, err := http.NewRequest("POST", url, bytes.NewReader(out)) if err != nil { @@ -242,19 +242,11 @@ func (h *HTTPExtender) send(action string, args interface{}, result interface{}) if err != nil { return err } + defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return fmt.Errorf("Failed %v with extender at URL %v, code %v", action, h.extenderURL, resp.StatusCode) } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - - if err := json.Unmarshal(body, result); err != nil { - return err - } - return nil + return json.NewDecoder(resp.Body).Decode(result) }