aboutsummaryrefslogtreecommitdiff
path: root/appservice
diff options
context:
space:
mode:
authorKegsay <kegan@matrix.org>2020-06-11 19:50:40 +0100
committerGitHub <noreply@github.com>2020-06-11 19:50:40 +0100
commitec7718e7f842fa0fc5198489c904de21003db4c2 (patch)
treee267fe8dae227b274381213ef3e8a3f34fbf0f26 /appservice
parent25cd2dd1c925fa0c1eeb27a3cd71e668344102ad (diff)
Roomserver API changes (#1118)
* s/QueryBackfill/PerformBackfill/g * OutputEvent now includes AddStateEvents which contain the full event of extra state events * Only include adds not the current event * Get adding state right
Diffstat (limited to 'appservice')
-rw-r--r--appservice/consumers/roomserver.go51
1 files changed, 2 insertions, 49 deletions
diff --git a/appservice/consumers/roomserver.go b/appservice/consumers/roomserver.go
index bb4df790..1657fe54 100644
--- a/appservice/consumers/roomserver.go
+++ b/appservice/consumers/roomserver.go
@@ -91,60 +91,13 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
return nil
}
- ev := output.NewRoomEvent.Event
- log.WithFields(log.Fields{
- "event_id": ev.EventID(),
- "room_id": ev.RoomID(),
- "type": ev.Type(),
- }).Info("appservice received an event from roomserver")
-
- missingEvents, err := s.lookupMissingStateEvents(output.NewRoomEvent.AddsStateEventIDs, ev)
- if err != nil {
- return err
- }
- events := append(missingEvents, ev)
+ events := []gomatrixserverlib.HeaderedEvent{output.NewRoomEvent.Event}
+ events = append(events, output.NewRoomEvent.AddStateEvents...)
// Send event to any relevant application services
return s.filterRoomserverEvents(context.TODO(), events)
}
-// lookupMissingStateEvents looks up the state events that are added by a new event,
-// and returns any not already present.
-func (s *OutputRoomEventConsumer) lookupMissingStateEvents(
- addsStateEventIDs []string, event gomatrixserverlib.HeaderedEvent,
-) ([]gomatrixserverlib.HeaderedEvent, error) {
- // Fast path if there aren't any new state events.
- if len(addsStateEventIDs) == 0 {
- return []gomatrixserverlib.HeaderedEvent{}, nil
- }
-
- // Fast path if the only state event added is the event itself.
- if len(addsStateEventIDs) == 1 && addsStateEventIDs[0] == event.EventID() {
- return []gomatrixserverlib.HeaderedEvent{}, nil
- }
-
- result := []gomatrixserverlib.HeaderedEvent{}
- missing := []string{}
- for _, id := range addsStateEventIDs {
- if id != event.EventID() {
- // If the event isn't the current one, add it to the list of events
- // to retrieve from the roomserver
- missing = append(missing, id)
- }
- }
-
- // Request the missing events from the roomserver
- eventReq := api.QueryEventsByIDRequest{EventIDs: missing}
- var eventResp api.QueryEventsByIDResponse
- if err := s.rsAPI.QueryEventsByID(context.TODO(), &eventReq, &eventResp); err != nil {
- return nil, err
- }
-
- result = append(result, eventResp.Events...)
-
- return result, nil
-}
-
// filterRoomserverEvents takes in events and decides whether any of them need
// to be passed on to an external application service. It does this by checking
// each namespace of each registered application service, and if there is a