diff --git a/federationsender/internal/perform.go b/federationsender/internal/perform.go index e8bb39537..504845f70 100644 --- a/federationsender/internal/perform.go +++ b/federationsender/internal/perform.go @@ -192,13 +192,25 @@ func (r *FederationSenderInternalAPI) performJoinUsingServer( return fmt.Errorf("joinCtx.CheckSendJoinResponse: %w", err) } + // Work out which events were not returned from checking the + // send_join response. We'll include these in a map so that we + // don't generate input events for them. + var invalidEventIDs map[string]bool + if invalid := respState.InvalidEventIDs(); len(invalid) > 0 { + invalidEventIDs = make(map[string]bool) + for _, eventID := range invalid { + invalidEventIDs[eventID] = true + } + } + // If we successfully performed a send_join above then the other // server now thinks we're a part of the room. Send the newly // returned state to the roomserver to update our local view. if err = roomserverAPI.SendEventWithState( ctx, r.rsAPI, respState, - event.Headered(respMakeJoin.RoomVersion), nil, + event.Headered(respMakeJoin.RoomVersion), + invalidEventIDs, ); err != nil { return fmt.Errorf("r.producer.SendEventWithState: %w", err) } diff --git a/go.mod b/go.mod index b407c4d80..d25fdf4f0 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/matrix-org/go-http-js-libp2p v0.0.0-20200518170932-783164aeeda4 github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3 github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd - github.com/matrix-org/gomatrixserverlib v0.0.0-20200907140345-a4851252e384 + github.com/matrix-org/gomatrixserverlib v0.0.0-20200907143659-4b5669b82c8d github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91 github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4 github.com/mattn/go-sqlite3 v1.14.2 diff --git a/go.sum b/go.sum index a538a2912..fa51f058a 100644 --- a/go.sum +++ b/go.sum @@ -567,8 +567,8 @@ github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 h1:Hr3zjRsq2bh github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0= github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd h1:xVrqJK3xHREMNjwjljkAUaadalWc0rRbmVuQatzmgwg= github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s= -github.com/matrix-org/gomatrixserverlib v0.0.0-20200907140345-a4851252e384 h1:ShZMM8Yh3mWtMUc7MubTrFM+3K/RYg36uXP7LnocxoM= -github.com/matrix-org/gomatrixserverlib v0.0.0-20200907140345-a4851252e384/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200907143659-4b5669b82c8d h1:nHCJnv2QxP1eQzVhIl9Iwkc5wGaWTzOhcT7wfSpmRl8= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200907143659-4b5669b82c8d/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU= github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91 h1:HJ6U3S3ljJqNffYMcIeAncp5qT/i+ZMiJ2JC2F0aXP4= github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91/go.mod h1:sjyPyRxKM5uw1nD2cJ6O2OxI6GOqyVBfNXqKjBZTBZE= github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 h1:ntrLa/8xVzeSs8vHFHK25k0C+NV74sYMJnNSg5NoSRo=