From 185a10aacab81eb126cb42937b98923ea10231f5 Mon Sep 17 00:00:00 2001 From: Marco98 Date: Sat, 3 Aug 2024 19:39:13 +0200 Subject: [PATCH] fix: writing clusterfail to hijacked connection --- pkg/proxy/handler.go | 9 ++++++--- pkg/proxy/main.go | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/proxy/handler.go b/pkg/proxy/handler.go index 92fd470..d368023 100644 --- a/pkg/proxy/handler.go +++ b/pkg/proxy/handler.go @@ -64,8 +64,11 @@ func (p *Proxy) proxyHandler() func(w http.ResponseWriter, r *http.Request) { } else { log.WithError(err).Error("failed to proxy request") } - if err := p.getClusterFailSite(w); err != nil { - log.WithError(err).Error("error writing error to response") + // prevent writing to hijacked connection + if !errors.Is(err, errProxyWs) { + if err := p.getClusterFailSite(w); err != nil { + log.WithError(err).Error("error writing error to response") + } } } } @@ -198,7 +201,7 @@ func (p *Proxy) proxyWebsocket(cluster string, w http.ResponseWriter, r *http.Re case err = <-berr: } if e, ok := err.(*websocket.CloseError); !ok || e.Code == websocket.CloseAbnormalClosure { - return fmt.Errorf("error while proxing ws: %w", err) + return errors.Join(errProxyWs, err) } return nil } diff --git a/pkg/proxy/main.go b/pkg/proxy/main.go index 5d4465e..6b4518e 100644 --- a/pkg/proxy/main.go +++ b/pkg/proxy/main.go @@ -27,6 +27,8 @@ const ( localHTTPDir = "/pveportal/" ) +var errProxyWs = errors.New("error while proxing ws") + func Run(www embed.FS) error { cpath := flag.String("c", "pveportal.yaml", "config path") loglevel := flag.String("l", "INFO", "loglevel")