From bc8812874029e06e11679d62cfbb41656b9fbc3a Mon Sep 17 00:00:00 2001 From: Frank Schroeder Date: Fri, 26 May 2017 09:25:14 +0200 Subject: [PATCH] Issue #300: GzipResponseWriter should implement http.Hijacker This patch fixes an error 500 when websocket clients are setting an Accept-Encoding: gzip header. --- proxy/gzip/gzip_handler.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/proxy/gzip/gzip_handler.go b/proxy/gzip/gzip_handler.go index 046eb5b14..9cdf70d10 100644 --- a/proxy/gzip/gzip_handler.go +++ b/proxy/gzip/gzip_handler.go @@ -8,8 +8,11 @@ package gzip import ( + "bufio" "compress/gzip" + "errors" "io" + "net" "net/http" "regexp" "strings" @@ -91,6 +94,13 @@ func (grw *GzipResponseWriter) Close() { } } +func (grw *GzipResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + if hj, ok := grw.ResponseWriter.(http.Hijacker); ok { + return hj.Hijack() + } + return nil, nil, errors.New("not a Hijacker") +} + func isCompressable(header http.Header, contentTypes *regexp.Regexp) bool { // don't compress if it is already encoded if header.Get(headerContentEncoding) != "" {