diff --git a/middleware/gzip/gzip.go b/middleware/gzip/gzip.go index 9d75b351..f24a94aa 100644 --- a/middleware/gzip/gzip.go +++ b/middleware/gzip/gzip.go @@ -141,3 +141,12 @@ func (w *gzipResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { } return nil, nil, fmt.Errorf("not a Hijacker") } + +// CloseNotify implements http.CloseNotifier. +// It just inherits the underlying ResponseWriter's CloseNotify method. +func (w *gzipResponseWriter) CloseNotify() <-chan bool { + if cn, ok := w.ResponseWriter.(http.CloseNotifier); ok { + return cn.CloseNotify() + } + panic("not a CloseNotifier") +} diff --git a/middleware/recorder.go b/middleware/recorder.go index ab30e305..50f4811c 100644 --- a/middleware/recorder.go +++ b/middleware/recorder.go @@ -87,3 +87,12 @@ func (r *ResponseRecorder) Flush() { panic("not a Flusher") // should be recovered at the beginning of middleware stack } } + +// CloseNotify implements http.CloseNotifier. +// It just inherits the underlying ResponseWriter's CloseNotify method. +func (r *ResponseRecorder) CloseNotify() <-chan bool { + if cn, ok := r.ResponseWriter.(http.CloseNotifier); ok { + return cn.CloseNotify() + } + panic("not a CloseNotifier") +}