diff options
author | Joshua Rubin <joshua@rubixconsulting.com> | 2017-10-27 01:47:08 -0600 |
---|---|---|
committer | Tom Bergan <tombergan@google.com> | 2017-10-27 19:33:14 +0000 |
commit | a4d03a9bf7604b727abd0a1ebfb118ff6366ee50 (patch) | |
tree | 28954eb28da460c6cefaf5447dd31782b61adadc /src/net/http/header.go | |
parent | b52b77cb953430b76242724394bb66e79fda9f10 (diff) | |
download | go-a4d03a9bf7604b727abd0a1ebfb118ff6366ee50.tar.gz go-a4d03a9bf7604b727abd0a1ebfb118ff6366ee50.zip |
net/http: fix minor leak in Header.WriteSubset
Header.WriteSubset uses a sync.Pool but wouldn't Put the sorter back in
the pool if there was an error writing to the io.Writer
I'm not really sure why the sorter is returned to begin with. The
comment says "for possible return to headerSorterCache".
This also doesn't address potential panics that might occur, but the
overhead of doing the Put in a defer would likely be too great.
Change-Id: If3c45a4c3e11f6ec65d187e25b63455b0142d4e3
Reviewed-on: https://go-review.googlesource.com/73910
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tom Bergan <tombergan@google.com>
Diffstat (limited to 'src/net/http/header.go')
-rw-r--r-- | src/net/http/header.go | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/net/http/header.go b/src/net/http/header.go index 832169247f..622ad28963 100644 --- a/src/net/http/header.go +++ b/src/net/http/header.go @@ -156,6 +156,7 @@ func (h Header) WriteSubset(w io.Writer, exclude map[string]bool) error { v = textproto.TrimString(v) for _, s := range []string{kv.key, ": ", v, "\r\n"} { if _, err := ws.WriteString(s); err != nil { + headerSorterPool.Put(sorter) return err } } |