From 668a722ee0e85b1f058962bd4df96ae542018a23 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 8 Sep 2020 13:41:08 +0100 Subject: [PATCH] Backoff for 401s (#1410) * Backoff for 401s * Human-readable retry_after in logs --- federationsender/api/api.go | 2 +- federationsender/internal/api.go | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/federationsender/api/api.go b/federationsender/api/api.go index 655d1d10..adc3b34c 100644 --- a/federationsender/api/api.go +++ b/federationsender/api/api.go @@ -30,7 +30,7 @@ type FederationClientError struct { } func (e *FederationClientError) Error() string { - return fmt.Sprintf("%s - (retry_after=%d, blacklisted=%v)", e.Err, e.RetryAfter, e.Blacklisted) + return fmt.Sprintf("%s - (retry_after=%s, blacklisted=%v)", e.Err, e.RetryAfter.String(), e.Blacklisted) } // FederationSenderInternalAPI is used to query information from the federation sender. diff --git a/federationsender/internal/api.go b/federationsender/internal/api.go index 61663be3..2a70f7ed 100644 --- a/federationsender/internal/api.go +++ b/federationsender/internal/api.go @@ -70,7 +70,10 @@ func failBlacklistableError(err error, stats *statistics.ServerStatistics) (unti if !ok { return stats.Failure() } - if mxerr.Code >= 500 && mxerr.Code < 600 { + if mxerr.Code == 401 { // invalid signature in X-Matrix header + return stats.Failure() + } + if mxerr.Code >= 500 && mxerr.Code < 600 { // internal server errors return stats.Failure() } return