From 2d15a8a566fe373851c2b7972e11b95d0b71a799 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Mon, 12 Oct 2020 16:45:30 +0100 Subject: [PATCH] Find servers more aggressively --- federationapi/routing/send.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/federationapi/routing/send.go b/federationapi/routing/send.go index a0ef5559c..a1151e304 100644 --- a/federationapi/routing/send.go +++ b/federationapi/routing/send.go @@ -369,21 +369,20 @@ func (t *txnReq) processEvent(ctx context.Context, e gomatrixserverlib.Event) er return roomNotFoundError{e.RoomID()} } + // We will need to know this when fetching missing auth or prev events. + t.servers = []gomatrixserverlib.ServerName{t.Origin} + serverReq := &api.QueryServerJoinedToRoomRequest{ + RoomID: e.RoomID(), + } + serverRes := &api.QueryServerJoinedToRoomResponse{} + if err := t.rsAPI.QueryServerJoinedToRoom(ctx, serverReq, serverRes); err == nil { + t.servers = append(t.servers, serverRes.ServerNames...) + logger.Infof("Found %d server(s) to query for missing events", len(t.servers)) + } + if len(stateResp.MissingAuthEventIDs) > 0 { logger.Infof("Event refers to %d unknown auth_events", len(stateResp.MissingAuthEventIDs)) - if len(t.servers) == 0 { - t.servers = []gomatrixserverlib.ServerName{t.Origin} - serverReq := &api.QueryServerJoinedToRoomRequest{ - RoomID: e.RoomID(), - } - serverRes := &api.QueryServerJoinedToRoomResponse{} - if err := t.rsAPI.QueryServerJoinedToRoom(ctx, serverReq, serverRes); err == nil { - t.servers = append(t.servers, serverRes.ServerNames...) - logger.Infof("Found %d server(s) to query for missing events", len(t.servers)) - } - } - if err := t.retrieveMissingAuthEvents(ctx, e, &stateResp); err != nil { return fmt.Errorf("t.retrieveMissingAuthEvents: %w", err) }