summaryrefslogtreecommitdiff
path: root/vendor/github.com/gin-contrib/gzip/handler.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gin-contrib/gzip/handler.go')
-rw-r--r--vendor/github.com/gin-contrib/gzip/handler.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/vendor/github.com/gin-contrib/gzip/handler.go b/vendor/github.com/gin-contrib/gzip/handler.go
index 7de33eb64..ee9eb9f66 100644
--- a/vendor/github.com/gin-contrib/gzip/handler.go
+++ b/vendor/github.com/gin-contrib/gzip/handler.go
@@ -3,7 +3,7 @@ package gzip
import (
"compress/gzip"
"fmt"
- "io/ioutil"
+ "io"
"net/http"
"path/filepath"
"strings"
@@ -22,7 +22,7 @@ func newGzipHandler(level int, options ...Option) *gzipHandler {
Options: DefaultOptions,
gzPool: sync.Pool{
New: func() interface{} {
- gz, err := gzip.NewWriterLevel(ioutil.Discard, level)
+ gz, err := gzip.NewWriterLevel(io.Discard, level)
if err != nil {
panic(err)
}
@@ -47,13 +47,17 @@ func (g *gzipHandler) Handle(c *gin.Context) {
gz := g.gzPool.Get().(*gzip.Writer)
defer g.gzPool.Put(gz)
- defer gz.Reset(ioutil.Discard)
+ defer gz.Reset(io.Discard)
gz.Reset(c.Writer)
c.Header("Content-Encoding", "gzip")
c.Header("Vary", "Accept-Encoding")
c.Writer = &gzipWriter{c.Writer, gz}
defer func() {
+ if c.Writer.Size() < 0 {
+ // do not write gzip footer when nothing is written to the response body
+ gz.Reset(io.Discard)
+ }
gz.Close()
c.Header("Content-Length", fmt.Sprint(c.Writer.Size()))
}()