From 55a54100dba630adaf5a6fe5f9a0b9989a26fcf4 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Mon, 23 Mar 2020 10:51:15 +0000 Subject: [PATCH] Don't generate event IDs unless needed --- clientapi/routing/createroom.go | 9 ++++++++- clientapi/routing/joinroom.go | 9 ++++++++- common/events.go | 7 +++---- federationapi/routing/threepid.go | 9 ++++++++- go.mod | 2 +- go.sum | 6 ++++++ roomserver/alias/alias.go | 9 ++++++++- roomserver/version/version.go | 6 +++--- 8 files changed, 45 insertions(+), 12 deletions(-) diff --git a/clientapi/routing/createroom.go b/clientapi/routing/createroom.go index 8f63df48e..f8a7bfa2a 100644 --- a/clientapi/routing/createroom.go +++ b/clientapi/routing/createroom.go @@ -379,7 +379,14 @@ func buildEvent( return nil, err } builder.AuthEvents = refs - eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName) + eventID := "" + eventIDFormat, err := roomVersion.EventIDFormat() + if err != nil { + return nil, err + } + if eventIDFormat == gomatrixserverlib.EventIDFormatV1 { + eventID = fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName) + } event, err := builder.Build( eventID, evTime, cfg.Matrix.ServerName, cfg.Matrix.KeyID, cfg.Matrix.PrivateKey, roomVersion, diff --git a/clientapi/routing/joinroom.go b/clientapi/routing/joinroom.go index 9f6f98626..3af34a668 100644 --- a/clientapi/routing/joinroom.go +++ b/clientapi/routing/joinroom.go @@ -335,7 +335,14 @@ func (r joinRoomReq) joinRoomUsingServer(roomID string, server gomatrixserverlib }, nil } - eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), r.cfg.Matrix.ServerName) + eventID := "" + eventIDFormat, err := respMakeJoin.RoomVersion.EventIDFormat() + if err != nil { + return nil, err + } + if eventIDFormat == gomatrixserverlib.EventIDFormatV1 { + eventID = fmt.Sprintf("$%s:%s", util.RandomString(16), r.cfg.Matrix.ServerName) + } event, err := respMakeJoin.JoinEvent.Build( eventID, r.evTime, r.cfg.Matrix.ServerName, r.cfg.Matrix.KeyID, r.cfg.Matrix.PrivateKey, respMakeJoin.RoomVersion, diff --git a/common/events.go b/common/events.go index 7900341f3..b541cbbd8 100644 --- a/common/events.go +++ b/common/events.go @@ -51,13 +51,12 @@ func BuildEvent( return nil, err } - var eventID string - var format gomatrixserverlib.EventIDFormat - format, err = queryRes.RoomVersion.EventIDFormat() + eventID := "" + eventIDFormat, err := queryRes.RoomVersion.EventIDFormat() if err != nil { return nil, err } - if format == gomatrixserverlib.EventIDFormatV1 { + if eventIDFormat == gomatrixserverlib.EventIDFormatV1 { eventID = fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName) } diff --git a/federationapi/routing/threepid.go b/federationapi/routing/threepid.go index b86fd58d8..f06f76fc0 100644 --- a/federationapi/routing/threepid.go +++ b/federationapi/routing/threepid.go @@ -280,7 +280,14 @@ func buildMembershipEvent( } builder.AuthEvents = refs - eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName) + eventID := "" + eventIDFormat, err := queryRes.RoomVersion.EventIDFormat() + if err != nil { + return nil, err + } + if eventIDFormat == gomatrixserverlib.EventIDFormatV1 { + eventID = fmt.Sprintf("$%s:%s", util.RandomString(16), cfg.Matrix.ServerName) + } event, err := builder.Build( eventID, time.Now(), cfg.Matrix.ServerName, cfg.Matrix.KeyID, cfg.Matrix.PrivateKey, queryRes.RoomVersion, diff --git a/go.mod b/go.mod index e69122634..29598d936 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/matrix-org/go-http-js-libp2p v0.0.0-20200318135427-31631a9ef51f github.com/matrix-org/go-sqlite3-js v0.0.0-20200304164012-aa524245b658 github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 - github.com/matrix-org/gomatrixserverlib v0.0.0-20200320164238-a144ea149d55 + github.com/matrix-org/gomatrixserverlib v0.0.0-20200323100819-422881c3d06b github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1 github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 github.com/mattn/go-sqlite3 v2.0.2+incompatible diff --git a/go.sum b/go.sum index ee06a2458..793e35547 100644 --- a/go.sum +++ b/go.sum @@ -130,6 +130,12 @@ github.com/matrix-org/gomatrixserverlib v0.0.0-20200124100636-0c2ec91d1df5 h1:km github.com/matrix-org/gomatrixserverlib v0.0.0-20200124100636-0c2ec91d1df5/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI= github.com/matrix-org/gomatrixserverlib v0.0.0-20200320164238-a144ea149d55 h1:1m/D/bEL+NqtW2PWko7Q7i9lekcegN+K3STLK4D/CFM= github.com/matrix-org/gomatrixserverlib v0.0.0-20200320164238-a144ea149d55/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323094202-39ec5e17a8f5 h1:hmC78piVeAvvdjuQ+zjnkyEmlAjR2gGwMWQh79srtAM= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323094202-39ec5e17a8f5/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323095935-e6d3df15dbfe h1:Zt5rFJriUGlCm+x8RRc3LdSqy0e6EaEWzW+PJXv76zw= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323095935-e6d3df15dbfe/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323100819-422881c3d06b h1:QrO9XkmoR+kbPwRmjcNl2crTt6XGXKcpsCyV/nZJDd0= +github.com/matrix-org/gomatrixserverlib v0.0.0-20200323100819-422881c3d06b/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI= github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1 h1:osLoFdOy+ChQqVUn2PeTDETFftVkl4w9t/OW18g3lnk= github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1/go.mod h1:cXoYQIENbdWIQHt1SyCo6Bl3C3raHwJ0wgVrXHSqf+A= github.com/matrix-org/util v0.0.0-20171127121716-2e2df66af2f5 h1:W7l5CP4V7wPyPb4tYE11dbmeAOwtFQBTW0rf4OonOS8= diff --git a/roomserver/alias/alias.go b/roomserver/alias/alias.go index fa401f504..809086f09 100644 --- a/roomserver/alias/alias.go +++ b/roomserver/alias/alias.go @@ -250,7 +250,14 @@ func (r *RoomserverAliasAPI) sendUpdatedAliasesEvent( } // Build the event - eventID := fmt.Sprintf("$%s:%s", util.RandomString(16), r.Cfg.Matrix.ServerName) + eventID := "" + eventIDFormat, err := roomVersion.EventIDFormat() + if err != nil { + return err + } + if eventIDFormat == gomatrixserverlib.EventIDFormatV1 { + eventID = fmt.Sprintf("$%s:%s", util.RandomString(16), r.Cfg.Matrix.ServerName) + } now := time.Now() event, err := builder.Build( eventID, now, r.Cfg.Matrix.ServerName, r.Cfg.Matrix.KeyID, diff --git a/roomserver/version/version.go b/roomserver/version/version.go index ed16ecca0..1ad502f23 100644 --- a/roomserver/version/version.go +++ b/roomserver/version/version.go @@ -43,11 +43,11 @@ var roomVersions = map[gomatrixserverlib.RoomVersion]RoomVersionDescription{ Stable: true, }, gomatrixserverlib.RoomVersionV3: RoomVersionDescription{ - Supported: false, + Supported: true, Stable: false, }, gomatrixserverlib.RoomVersionV4: RoomVersionDescription{ - Supported: false, + Supported: true, Stable: false, }, gomatrixserverlib.RoomVersionV5: RoomVersionDescription{ @@ -59,7 +59,7 @@ var roomVersions = map[gomatrixserverlib.RoomVersion]RoomVersionDescription{ // DefaultRoomVersion contains the room version that will, by // default, be used to create new rooms on this server. func DefaultRoomVersion() gomatrixserverlib.RoomVersion { - return gomatrixserverlib.RoomVersionV2 + return gomatrixserverlib.RoomVersionV4 } // RoomVersions returns a map of all known room versions to this