From 98ae0f43af5604d465f318c510ef672830d14277 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Tue, 29 Jun 2021 13:33:53 +0100 Subject: [PATCH] Deduplicate /state results --- federationapi/routing/send.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/federationapi/routing/send.go b/federationapi/routing/send.go index f95f80096..9aa0239ee 100644 --- a/federationapi/routing/send.go +++ b/federationapi/routing/send.go @@ -1029,12 +1029,13 @@ func (t *txnReq) lookupMissingStateViaState(ctx context.Context, roomID, eventID if err := state.Check(ctx, t.keys, nil); err != nil { return nil, err } - // Cache the results of this state lookup. - for _, ev := range state.AuthEvents { - t.cacheAndReturn(ev.Headered(roomVersion)) + // Cache the results of this state lookup and deduplicate anything we already + // have in the cache, freeing up memory. + for i, ev := range state.AuthEvents { + state.AuthEvents[i] = t.cacheAndReturn(ev.Headered(roomVersion)).Unwrap() } - for _, ev := range state.StateEvents { - t.cacheAndReturn(ev.Headered(roomVersion)) + for i, ev := range state.StateEvents { + state.StateEvents[i] = t.cacheAndReturn(ev.Headered(roomVersion)).Unwrap() } return &state, nil }