aboutsummaryrefslogtreecommitdiff
path: root/roomserver/internal/helpers/helpers.go
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-08-23 13:57:11 +0100
committerGitHub <noreply@github.com>2022-08-23 13:57:11 +0100
commit14fea600bbeeb745c1ff1fc1519e4db968c17f86 (patch)
tree65b6070cc4daaf002b1d3130e6e25adce8cb5ee5 /roomserver/internal/helpers/helpers.go
parent95a509757a6ad160e8d480cf21acb999c3309099 (diff)
Detect `types.MissingStateError` in `CheckServerAllowedToSeeEvent` (#2667)
This will hopefully stop some 500 errors on `/event` where there is no state-before known.
Diffstat (limited to 'roomserver/internal/helpers/helpers.go')
-rw-r--r--roomserver/internal/helpers/helpers.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/roomserver/internal/helpers/helpers.go b/roomserver/internal/helpers/helpers.go
index 6091f8ec..cbd1561f 100644
--- a/roomserver/internal/helpers/helpers.go
+++ b/roomserver/internal/helpers/helpers.go
@@ -254,8 +254,15 @@ func CheckServerAllowedToSeeEvent(
return false, err
}
default:
- // Something else went wrong
- return false, err
+ switch err.(type) {
+ case types.MissingStateError:
+ // If there's no state then we assume it's open visibility, as Synapse does:
+ // https://github.com/matrix-org/synapse/blob/aec87a0f9369a3015b2a53469f88d1de274e8b71/synapse/visibility.py#L654-L655
+ return true, nil
+ default:
+ // Something else went wrong
+ return false, err
+ }
}
return auth.IsServerAllowed(serverName, isServerInRoom, stateAtEvent), nil
}