diff --git a/main.go b/main.go index ab9703d..3e7bcb7 100644 --- a/main.go +++ b/main.go @@ -42,14 +42,19 @@ func (h *httpProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } hijacker, ok := w.(http.Hijacker) if !ok { + outConn.Close() http.Error(w, "hijack disallowed", http.StatusInternalServerError) return } conn, _, err := hijacker.Hijack() if err != nil { + outConn.Close() http.Error(w, err.Error(), http.StatusServiceUnavailable) return } + w.WriteHeader(http.StatusOK) + go transfer(conn, outConn) + go transfer(outConn, conn) } else { w.WriteHeader(http.StatusMethodNotAllowed) }