From e9ef023e586835df3465dbf3a40be72f200742ed Mon Sep 17 00:00:00 2001 From: qydysky Date: Tue, 8 Oct 2024 06:43:33 +0000 Subject: [PATCH] 1 --- config.go | 4 +++- http.go | 9 +++------ 2 files changed, 6 insertions(+), 7 deletions(-) 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 } -- 2.39.2