aboutsummaryrefslogtreecommitdiff
path: root/federationapi
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-09-07 16:14:09 +0200
committerGitHub <noreply@github.com>2022-09-07 16:14:09 +0200
commit0d697f675484cfd990af640aad6fa54c44ecd208 (patch)
tree874117363e0287647e9a1b10fbdfa76967295e66 /federationapi
parent7e8c605f98458f829fc914c3476cf4999e317bcd (diff)
Add HTTP status code to FederationClientError (#2699)
Also ensures we wait on more HTTP status codes.
Diffstat (limited to 'federationapi')
-rw-r--r--federationapi/api/api.go4
-rw-r--r--federationapi/inthttp/server.go10
2 files changed, 11 insertions, 3 deletions
diff --git a/federationapi/api/api.go b/federationapi/api/api.go
index 292ed55a..f2553878 100644
--- a/federationapi/api/api.go
+++ b/federationapi/api/api.go
@@ -5,9 +5,10 @@ import (
"fmt"
"time"
- "github.com/matrix-org/dendrite/federationapi/types"
"github.com/matrix-org/gomatrix"
"github.com/matrix-org/gomatrixserverlib"
+
+ "github.com/matrix-org/dendrite/federationapi/types"
)
// FederationInternalAPI is used to query information from the federation sender.
@@ -108,6 +109,7 @@ type FederationClientError struct {
Err string
RetryAfter time.Duration
Blacklisted bool
+ Code int // HTTP Status code from the remote server
}
func (e FederationClientError) Error() string {
diff --git a/federationapi/inthttp/server.go b/federationapi/inthttp/server.go
index a8b829a7..58ea9ddc 100644
--- a/federationapi/inthttp/server.go
+++ b/federationapi/inthttp/server.go
@@ -6,10 +6,12 @@ import (
"net/http"
"github.com/gorilla/mux"
- "github.com/matrix-org/dendrite/federationapi/api"
- "github.com/matrix-org/dendrite/internal/httputil"
+ "github.com/matrix-org/gomatrix"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
+
+ "github.com/matrix-org/dendrite/federationapi/api"
+ "github.com/matrix-org/dendrite/internal/httputil"
)
// AddRoutes adds the FederationInternalAPI handlers to the http.ServeMux.
@@ -229,6 +231,10 @@ func federationClientError(err error) error {
return &ferr
case *api.FederationClientError:
return ferr
+ case gomatrix.HTTPError:
+ return &api.FederationClientError{
+ Code: ferr.Code,
+ }
default:
return &api.FederationClientError{
Err: err.Error(),