Skip to content

Commit 65147fb

Browse files
committed
fix goroutine leak in proxy raw mode
1 parent 92b41eb commit 65147fb

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

middleware/proxy.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,15 @@ func proxyRaw(t *ProxyTarget, c echo.Context, config ProxyConfig) http.Handler {
175175

176176
go cp(out, in)
177177
go cp(in, out)
178-
err = <-errCh
179-
if err != nil && err != io.EOF {
180-
c.Set("_error", fmt.Errorf("proxy raw, copy body error=%w, url=%s", err, t.URL))
178+
179+
// Wait for BOTH goroutines to complete
180+
err1 := <-errCh
181+
err2 := <-errCh
182+
183+
if err1 != nil && err1 != io.EOF {
184+
c.Set("_error", fmt.Errorf("proxy raw, copy body error=%w, url=%s", err1, t.URL))
185+
} else if err2 != nil && err2 != io.EOF {
186+
c.Set("_error", fmt.Errorf("proxy raw, copy body error=%w, url=%s", err2, t.URL))
181187
}
182188
})
183189
}

0 commit comments

Comments
 (0)