From 24d084d7e6fc27f7b982abec2b6cc6e044e0c1c8 Mon Sep 17 00:00:00 2001 From: mpl Date: Fri, 13 Sep 2019 14:32:03 +0200 Subject: [PATCH] implement Flusher and Hijacker for codeCatcher --- middlewares/errorpages/error_pages.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/middlewares/errorpages/error_pages.go b/middlewares/errorpages/error_pages.go index 2e5b37556..16da5584f 100644 --- a/middlewares/errorpages/error_pages.go +++ b/middlewares/errorpages/error_pages.go @@ -194,6 +194,21 @@ func (cc *codeCatcher) WriteHeader(code int) { cc.code = code } +// Hijack hijacks the connection +func (cc *codeCatcher) Hijack() (net.Conn, *bufio.ReadWriter, error) { + if hj, ok := cc.responseWriter.(http.Hijacker); ok { + return hj.Hijack() + } + return nil, nil, fmt.Errorf("%T is not a http.Hijacker", cc.responseWriter) +} + +// Flush sends any buffered data to the client. +func (cc *codeCatcher) Flush() { + if flusher, ok := cc.responseWriter.(http.Flusher); ok { + flusher.Flush() + } +} + type responseRecorder interface { http.ResponseWriter http.Flusher