diff options
author | Neil Alexander <neilalexander@users.noreply.github.com> | 2022-08-23 13:57:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-23 13:57:11 +0100 |
commit | 14fea600bbeeb745c1ff1fc1519e4db968c17f86 (patch) | |
tree | 65b6070cc4daaf002b1d3130e6e25adce8cb5ee5 /roomserver/internal/helpers/helpers.go | |
parent | 95a509757a6ad160e8d480cf21acb999c3309099 (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.go | 11 |
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 } |