aboutsummaryrefslogtreecommitdiff
path: root/federationapi
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2020-09-08 10:28:13 +0100
committerGitHub <noreply@github.com>2020-09-08 10:28:13 +0100
commit726ad6ce2e0a030eae522bd9ac2a660cf04f36a8 (patch)
tree2d3d4277094dc84e65fc8cf30f2cfb68ef6807b7 /federationapi
parent1602df87525bfed6e226d59feb2ffdcb9d1aeadb (diff)
Backoff ignore invalid signatures (#1408)
Diffstat (limited to 'federationapi')
-rw-r--r--federationapi/routing/send.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/federationapi/routing/send.go b/federationapi/routing/send.go
index c6e2a3dc..9def7c3c 100644
--- a/federationapi/routing/send.go
+++ b/federationapi/routing/send.go
@@ -477,7 +477,12 @@ func (t *txnReq) lookupStateAfterEvent(ctx context.Context, roomVersion gomatrix
// fetch the event we're missing and add it to the pile
h, err := t.lookupEvent(ctx, roomVersion, eventID, false)
- if err != nil {
+ switch err.(type) {
+ case verifySigError:
+ return respState, nil
+ case nil:
+ // do nothing
+ default:
return nil, err
}
t.haveEvents[h.EventID()] = h
@@ -586,7 +591,15 @@ retryAllowedState:
switch missing := err.(type) {
case gomatrixserverlib.MissingAuthEventError:
h, err2 := t.lookupEvent(ctx, roomVersion, missing.AuthEventID, true)
- if err2 != nil {
+ switch err2.(type) {
+ case verifySigError:
+ return &gomatrixserverlib.RespState{
+ AuthEvents: authEventList,
+ StateEvents: resolvedStateEvents,
+ }, nil
+ case nil:
+ // do nothing
+ default:
return nil, fmt.Errorf("missing auth event %s and failed to look it up: %w", missing.AuthEventID, err2)
}
util.GetLogger(ctx).Infof("fetched event %s", missing.AuthEventID)
@@ -762,7 +775,12 @@ func (t *txnReq) lookupMissingStateViaStateIDs(ctx context.Context, roomID, even
for missingEventID := range missing {
var h *gomatrixserverlib.HeaderedEvent
h, err = t.lookupEvent(ctx, roomVersion, missingEventID, false)
- if err != nil {
+ switch err.(type) {
+ case verifySigError:
+ continue
+ case nil:
+ // do nothing
+ default:
return nil, err
}
t.haveEvents[h.EventID()] = h