Only loopback invite event if we know the room

This commit is contained in:
Neil Alexander 2020-05-06 15:59:31 +01:00
parent 0100f65f57
commit c744cf052f

View file

@ -54,21 +54,26 @@ func (r *RoomserverInternalAPI) InputRoomEvents(
ctx context.Context, ctx context.Context,
request *api.InputRoomEventsRequest, request *api.InputRoomEventsRequest,
response *api.InputRoomEventsResponse, response *api.InputRoomEventsResponse,
) (err error) { ) error {
// We lock as processRoomEvent can only be called once at a time // We lock as processRoomEvent can only be called once at a time
r.mutex.Lock() r.mutex.Lock()
defer r.mutex.Unlock() defer r.mutex.Unlock()
for i := range request.InputInviteEvents { for i := range request.InputInviteEvents {
if event, e := processInviteEvent(ctx, r.DB, r, request.InputInviteEvents[i]); e != nil { if event, err := processInviteEvent(ctx, r.DB, r, request.InputInviteEvents[i]); err != nil {
return e return err
} else { } else {
request.InputRoomEvents = append(request.InputRoomEvents, api.InputRoomEvent{ // If the room is one that we know about then append the invite
Kind: api.KindNew, // event to the list of room events to process.
Event: *event, if nid, err := r.DB.RoomNIDExcludingStubs(ctx, event.RoomID()); err == nil && nid > 0 {
AuthEventIDs: event.AuthEventIDs(), request.InputRoomEvents = append(request.InputRoomEvents, api.InputRoomEvent{
}) Kind: api.KindNew,
Event: *event,
AuthEventIDs: event.AuthEventIDs(),
})
}
} }
} }
var err error
for i := range request.InputRoomEvents { for i := range request.InputRoomEvents {
if response.EventID, err = processRoomEvent(ctx, r.DB, r, request.InputRoomEvents[i]); err != nil { if response.EventID, err = processRoomEvent(ctx, r.DB, r, request.InputRoomEvents[i]); err != nil {
return err return err