From 1cdc163276f3437645c0b2c01602e53fa2292c46 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Thu, 26 May 2022 13:38:41 +0200 Subject: [performance] Don't retry/backoff invalid http requests that will never succeed (#609) * add httpguts (ew) * add ValidateRequest err wrapping logic * don't retry on unrecoverable errors * i am very clever --- internal/transport/transport.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'internal/transport') diff --git a/internal/transport/transport.go b/internal/transport/transport.go index c52686c43..22dfbeb9a 100644 --- a/internal/transport/transport.go +++ b/internal/transport/transport.go @@ -35,6 +35,7 @@ import ( "github.com/sirupsen/logrus" "github.com/superseriousbusiness/activity/pub" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" + "github.com/superseriousbusiness/gotosocial/internal/httpclient" ) // Transport wraps the pub.Transport interface with some additional functionality for fetching remote media. @@ -123,8 +124,14 @@ func (t *transport) do(r *http.Request, signer func(*http.Request) error, retryO // Generate error from status code for logging err = errors.New(`http response "` + rsp.Status + `"`) - } else if errorsv2.Is(err, context.DeadlineExceeded, context.Canceled) { - // Return early if context has cancelled + } else if errorsv2.Is(err, + context.DeadlineExceeded, + context.Canceled, + httpclient.ErrInvalidRequest, + httpclient.ErrBodyTooLarge, + httpclient.ErrReservedAddr, + ) { + // Return on non-retryable errors return nil, err } else if strings.Contains(err.Error(), "stopped after 10 redirects") { // Don't bother if net/http returned after too many redirects -- cgit v1.3