aboutsummaryrefslogtreecommitdiff
path: root/federationapi/consumers
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2022-03-07 17:17:16 +0000
committerGitHub <noreply@github.com>2022-03-07 17:17:16 +0000
commit67de4dbd0c729fe9c672081f4f4ab64f03efeb36 (patch)
treea27394ad11c7ecce03014892116673870de74d4b /federationapi/consumers
parent05fa66c9c87c1ad32ab3d1554f53475ed1f40707 (diff)
Don't send `adds_state_events` in roomserver output events anymore (#2258)
* Don't send `adds_state_events` in roomserver output events anymore * Set `omitempty` on some output fields that aren't always set * Add `AddsState` helper function * No-op if no added state event IDs * Revert "No-op if no added state event IDs" This reverts commit 71a0ef3df10e0d94234d916246c30b0a4e82b26e. * Revert "Add `AddsState` helper function" This reverts commit c9fbe45475eb12ae44d2a8da7c0fc3a002ad9819.
Diffstat (limited to 'federationapi/consumers')
-rw-r--r--federationapi/consumers/roomserver.go23
1 files changed, 22 insertions, 1 deletions
diff --git a/federationapi/consumers/roomserver.go b/federationapi/consumers/roomserver.go
index 173dcff0..989f7cf4 100644
--- a/federationapi/consumers/roomserver.go
+++ b/federationapi/consumers/roomserver.go
@@ -146,7 +146,28 @@ func (s *OutputRoomEventConsumer) processInboundPeek(orp api.OutputNewInboundPee
// processMessage updates the list of currently joined hosts in the room
// and then sends the event to the hosts that were joined before the event.
func (s *OutputRoomEventConsumer) processMessage(ore api.OutputNewRoomEvent) error {
- addsJoinedHosts, err := joinedHostsFromEvents(gomatrixserverlib.UnwrapEventHeaders(ore.AddsState()))
+ eventsRes := &api.QueryEventsByIDResponse{}
+ if len(ore.AddsStateEventIDs) > 0 {
+ eventsReq := &api.QueryEventsByIDRequest{
+ EventIDs: ore.AddsStateEventIDs,
+ }
+ if err := s.rsAPI.QueryEventsByID(s.ctx, eventsReq, eventsRes); err != nil {
+ return fmt.Errorf("s.rsAPI.QueryEventsByID: %w", err)
+ }
+
+ found := false
+ for _, event := range eventsRes.Events {
+ if event.EventID() == ore.Event.EventID() {
+ found = true
+ break
+ }
+ }
+ if !found {
+ eventsRes.Events = append(eventsRes.Events, ore.Event)
+ }
+ }
+
+ addsJoinedHosts, err := joinedHostsFromEvents(gomatrixserverlib.UnwrapEventHeaders(eventsRes.Events))
if err != nil {
return err
}