middleware/errorhandler: Implement Hijacker so it works with ws proxy

This commit is contained in:
Mike Lang
2016-11-02 13:29:25 -07:00
parent 4c9c1338f4
commit 35cf10e1d6

View File

@@ -1,6 +1,9 @@
package middleware
import (
"bufio"
"fmt"
"net"
"net/http"
)
@@ -78,3 +81,14 @@ func (i *errorInterceptor) Write(data []byte) (int, error) {
}
return len(data), nil
}
// errorInterceptor also implements net.Hijacker, to let the downstream Handler
// hijack the connection. This is needed by the app-mapper's proxy.
func (i *errorInterceptor) Hijack() (net.Conn, *bufio.ReadWriter, error) {
hj, ok := i.originalWriter.(http.Hijacker)
if !ok {
return nil, nil, fmt.Errorf("error interceptor: can't cast original ResponseWriter to Hijacker")
}
i.gotCode = true
return hj.Hijack()
}