diff options
author | Till <2353100+S7evinK@users.noreply.github.com> | 2022-09-07 16:14:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 16:14:09 +0200 |
commit | 0d697f675484cfd990af640aad6fa54c44ecd208 (patch) | |
tree | 874117363e0287647e9a1b10fbdfa76967295e66 /federationapi | |
parent | 7e8c605f98458f829fc914c3476cf4999e317bcd (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.go | 4 | ||||
-rw-r--r-- | federationapi/inthttp/server.go | 10 |
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(), |