e = component2.Get[reqDealer]("http").Deal(r.Context(), w, r, routePath, backIs[i], logger, t.BlocksI)
}
- if e == nil {
+ if e == nil || errors.Is(e, ErrReqCreFail) {
break
}
}
w.Header().Add(header+"Error", e.Error())
if errors.Is(e, ErrHeaderCheckFail) || errors.Is(e, ErrBodyCheckFail) {
w.WriteHeader(http.StatusForbidden)
+ } else if errors.Is(e, ErrReqCreFail) {
+ w.WriteHeader(http.StatusServiceUnavailable)
} else if errors.Is(e, ErrAllBacksFail) {
w.WriteHeader(http.StatusBadGateway)
} else {
url = dealUri(url, chosenBack.getDealerReqUri())
- reqBody, e := r.GetBody()
- if e != nil {
- return ErrReqCreFail
- }
-
- req, e := http.NewRequestWithContext(ctx, r.Method, url, reqBody)
+ req, e := http.NewRequestWithContext(ctx, r.Method, url, r.Body)
if e != nil {
+ logger.Warn(`W:`, fmt.Sprintf(logFormat, r.RemoteAddr, chosenBack.route.config.Addr, routePath, chosenBack.Name, "Err", e, time.Since(opT)))
+ chosenBack.Disable()
return ErrReqCreFail
}