@@ -92,24 +92,22 @@ func proxyRaw(t *ProxyTarget, c echo.Context) http.Handler {
92
92
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
93
93
in , _ , err := c .Response ().Hijack ()
94
94
if err != nil {
95
- c .Error ( fmt .Errorf ("proxy raw, hijack error=%v, url=%s" , t .URL , err ))
95
+ c .Set ( "_error" , fmt .Sprintf ("proxy raw, hijack error=%v, url=%s" , t .URL , err ))
96
96
return
97
97
}
98
98
defer in .Close ()
99
99
100
100
out , err := net .Dial ("tcp" , t .URL .Host )
101
101
if err != nil {
102
- he := echo .NewHTTPError (http .StatusBadGateway , fmt .Sprintf ("proxy raw, dial error=%v, url=%s" , t .URL , err ))
103
- c .Error (he )
102
+ c .Set ("_error" , echo .NewHTTPError (http .StatusBadGateway , fmt .Sprintf ("proxy raw, dial error=%v, url=%s" , t .URL , err )))
104
103
return
105
104
}
106
105
defer out .Close ()
107
106
108
107
// Write header
109
108
err = r .Write (out )
110
109
if err != nil {
111
- he := echo .NewHTTPError (http .StatusBadGateway , fmt .Sprintf ("proxy raw, request header copy error=%v, url=%s" , t .URL , err ))
112
- c .Error (he )
110
+ c .Set ("_error" , echo .NewHTTPError (http .StatusBadGateway , fmt .Sprintf ("proxy raw, request header copy error=%v, url=%s" , t .URL , err )))
113
111
return
114
112
}
115
113
@@ -123,7 +121,7 @@ func proxyRaw(t *ProxyTarget, c echo.Context) http.Handler {
123
121
go cp (in , out )
124
122
err = <- errCh
125
123
if err != nil && err != io .EOF {
126
- c .Logger () .Errorf ("proxy raw, copy body error=%v, url=%s" , t .URL , err )
124
+ c .Set ( "_error" , fmt .Errorf ("proxy raw, copy body error=%v, url=%s" , t .URL , err ) )
127
125
}
128
126
})
129
127
}
@@ -251,6 +249,9 @@ func ProxyWithConfig(config ProxyConfig) echo.MiddlewareFunc {
251
249
default :
252
250
proxyHTTP (tgt , c , config ).ServeHTTP (res , req )
253
251
}
252
+ if e , ok := c .Get ("_error" ).(error ); ok {
253
+ err = e
254
+ }
254
255
255
256
return
256
257
}
0 commit comments