Don't limit servers, randomise order using map

This commit is contained in:
Neil Alexander 2022-01-25 11:37:56 +00:00
parent 90472490ad
commit 8c9b2e402a
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
2 changed files with 8 additions and 8 deletions

View file

@ -133,10 +133,7 @@ func (r *Inputer) processRoomEvent(
}
}
if input.Origin != "" {
serverRes.ServerNames = append([]gomatrixserverlib.ServerName{input.Origin}, serverRes.ServerNames...)
}
if len(serverRes.ServerNames) > 5 {
serverRes.ServerNames = serverRes.ServerNames[:5]
serverRes.ServerNames = append(serverRes.ServerNames, input.Origin)
}
// First of all, check that the auth events of the event are known.
@ -200,10 +197,13 @@ func (r *Inputer) processRoomEvent(
federation: r.FSAPI,
keys: r.KeyRing,
roomsMu: internal.NewMutexByRoom(),
servers: serverRes.ServerNames,
servers: map[gomatrixserverlib.ServerName]struct{}{},
hadEvents: map[string]bool{},
haveEvents: map[string]*gomatrixserverlib.HeaderedEvent{},
}
for _, serverName := range serverRes.ServerNames {
missingState.servers[serverName] = struct{}{}
}
if err = missingState.processEventWithMissingState(ctx, event, headered.RoomVersion); err != nil {
isRejected = true
rejectionErr = fmt.Errorf("missingState.processEventWithMissingState: %w", err)

View file

@ -25,7 +25,7 @@ type missingStateReq struct {
keys gomatrixserverlib.JSONVerifier
federation fedapi.FederationInternalAPI
roomsMu *internal.MutexByRoom
servers []gomatrixserverlib.ServerName
servers map[gomatrixserverlib.ServerName]struct{}
hadEvents map[string]bool
hadEventsMutex sync.Mutex
haveEvents map[string]*gomatrixserverlib.HeaderedEvent
@ -371,7 +371,7 @@ func (t *missingStateReq) getMissingEvents(ctx context.Context, e *gomatrixserve
}
var missingResp *gomatrixserverlib.RespMissingEvents
for _, server := range t.servers {
for server := range t.servers {
var m gomatrixserverlib.RespMissingEvents
rctx, cancel := context.WithTimeout(ctx, time.Second*30)
defer cancel()
@ -637,7 +637,7 @@ func (t *missingStateReq) lookupEvent(ctx context.Context, roomVersion gomatrixs
}
var event *gomatrixserverlib.Event
found := false
for _, serverName := range t.servers {
for serverName := range t.servers {
txn, err := t.federation.GetEvent(ctx, serverName, missingEventID)
if err != nil || len(txn.PDUs) == 0 {
util.GetLogger(ctx).WithError(err).WithField("event_id", missingEventID).Warn("Failed to get missing /event for event ID")