From: qydysky Date: Tue, 8 Oct 2024 06:43:33 +0000 (+0000) Subject: 1 X-Git-Tag: v0.1.20241008064526 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=e9ef023e586835df3465dbf3a40be72f200742ed;p=front%2F.git 1 --- diff --git a/config.go b/config.go index 6d8beac..0640598 100755 --- a/config.go +++ b/config.go @@ -181,7 +181,7 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) { 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 } } @@ -190,6 +190,8 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) { 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 { diff --git a/http.go b/http.go index d548637..d79b65e 100644 --- a/http.go +++ b/http.go @@ -43,13 +43,10 @@ func (httpDealer) Deal(ctx context.Context, w http.ResponseWriter, r *http.Reque 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 }