From d5ffc16f25938e5e5c5a8ae51e3558f97abc75aa Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 10 Jul 2015 10:19:55 -0700 Subject: [PATCH] Add abbreviated close response, to avoid any leaks --- pkg/controller/client.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkg/controller/client.go b/pkg/controller/client.go index 2db2742dc..599b9711b 100644 --- a/pkg/controller/client.go +++ b/pkg/controller/client.go @@ -26,6 +26,12 @@ import ( "github.com/minio/minio/pkg/server/rpc" ) +func closeResp(resp *http.Response) { + if resp != nil && resp.Body != nil { + resp.Body.Close() + } +} + // GetDisks get disks info of the server at given url func GetDisks(url string) ([]byte, error) { op := RPCOps{ @@ -37,10 +43,10 @@ func GetDisks(url string) ([]byte, error) { return nil, iodine.New(err, nil) } resp, err := req.Do() + defer closeResp(resp) if err != nil { return nil, iodine.New(err, nil) } - defer resp.Body.Close() var reply rpc.DiskInfoReply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return nil, iodine.New(err, nil) @@ -59,10 +65,10 @@ func GetMemStats(url string) ([]byte, error) { return nil, iodine.New(err, nil) } resp, err := req.Do() + defer closeResp(resp) if err != nil { return nil, iodine.New(err, nil) } - defer resp.Body.Close() var reply rpc.MemStatsReply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return nil, iodine.New(err, nil) @@ -81,10 +87,10 @@ func GetSysInfo(url string) ([]byte, error) { return nil, iodine.New(err, nil) } resp, err := req.Do() + defer closeResp(resp) if err != nil { return nil, iodine.New(err, nil) } - defer resp.Body.Close() var reply rpc.SysInfoReply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return nil, iodine.New(err, nil) @@ -103,10 +109,10 @@ func GetAuthKeys(url string) ([]byte, error) { return nil, iodine.New(err, nil) } resp, err := req.Do() + defer closeResp(resp) if err != nil { return nil, iodine.New(err, nil) } - defer resp.Body.Close() var reply rpc.AuthReply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return nil, iodine.New(err, nil) @@ -141,10 +147,10 @@ func SetDonut(url, hostname string, disks []string) error { return iodine.New(err, nil) } resp, err := req.Do() + defer closeResp(resp) if err != nil { return iodine.New(err, nil) } - defer resp.Body.Close() var reply rpc.Reply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return iodine.New(err, nil)