aboutsummaryrefslogtreecommitdiff
path: root/federationapi/routing/events.go
diff options
context:
space:
mode:
Diffstat (limited to 'federationapi/routing/events.go')
-rw-r--r--federationapi/routing/events.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/federationapi/routing/events.go b/federationapi/routing/events.go
index 196a54db..d3f0e81c 100644
--- a/federationapi/routing/events.go
+++ b/federationapi/routing/events.go
@@ -35,10 +35,6 @@ func GetEvent(
eventID string,
origin spec.ServerName,
) util.JSONResponse {
- err := allowedToSeeEvent(ctx, request.Origin(), rsAPI, eventID)
- if err != nil {
- return *err
- }
// /_matrix/federation/v1/event/{eventId} doesn't have a roomID, we use an empty string,
// which results in `QueryEventsByID` to first get the event and use that to determine the roomID.
event, err := fetchEvent(ctx, rsAPI, "", eventID)
@@ -46,6 +42,11 @@ func GetEvent(
return *err
}
+ err = allowedToSeeEvent(ctx, request.Origin(), rsAPI, eventID, event.RoomID())
+ if err != nil {
+ return *err
+ }
+
return util.JSONResponse{Code: http.StatusOK, JSON: gomatrixserverlib.Transaction{
Origin: origin,
OriginServerTS: spec.AsTimestamp(time.Now()),
@@ -62,8 +63,9 @@ func allowedToSeeEvent(
origin spec.ServerName,
rsAPI api.FederationRoomserverAPI,
eventID string,
+ roomID string,
) *util.JSONResponse {
- allowed, err := rsAPI.QueryServerAllowedToSeeEvent(ctx, origin, eventID)
+ allowed, err := rsAPI.QueryServerAllowedToSeeEvent(ctx, origin, eventID, roomID)
if err != nil {
resErr := util.ErrorResponse(err)
return &resErr