Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PDU Sender split #3100

Merged
merged 30 commits into from
Jun 6, 2023
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
56448c1
Split senderID & userID fields on PDU
devonh Jun 1, 2023
b479b06
Fix sytest failures by using only SenderID everywhere for now
devonh Jun 2, 2023
222b67b
Use UserID in appservice
devonh Jun 2, 2023
d81b63f
Refine SenderID/UserID usage
devonh Jun 2, 2023
26ef024
Refine SenderID/UserID usage for push rules
devonh Jun 2, 2023
0c902f4
Refine SenderID/UserID usage
devonh Jun 2, 2023
00e719f
Refine SenderID/UserID usage
devonh Jun 2, 2023
8a3c01f
Refine SenderID/UserID usage
devonh Jun 3, 2023
bf5bf83
Refine SenderID/UserID usage
devonh Jun 3, 2023
752c89f
Refine SenderID/UserID usage
devonh Jun 3, 2023
7c82de9
Refine SenderID/UserID usage
devonh Jun 3, 2023
7cf96a8
Refine SenderID/UserID usage
devonh Jun 3, 2023
b324f7e
Refine SenderID/UserID usage
devonh Jun 3, 2023
3582ec7
Refine SenderID/UserID usage
devonh Jun 3, 2023
d7e4117
Remove pdu.UserID & pass in the required accessor
devonh Jun 6, 2023
57f8222
Merge branch 'main' into sender-split
devonh Jun 6, 2023
39545d5
Fix unpopulated struct fields
devonh Jun 6, 2023
872f8e4
Fix unpopulated struct fields for invite v1
devonh Jun 6, 2023
e388c9c
Make senderID query use only roomID
devonh Jun 6, 2023
1f043ef
Merge branch 'main' into sender-split
devonh Jun 6, 2023
c7bdc2e
UserAPI roomserver uses userIDs for push rules
devonh Jun 6, 2023
fbbf9b0
Use userID for sync stream invites
devonh Jun 6, 2023
d30bae3
Use userID for sync profile search
devonh Jun 6, 2023
ac61081
Remove redundant check in fed/SendInvite
devonh Jun 6, 2023
1c909ce
When handling input events, nil userID is valid
devonh Jun 6, 2023
7420e73
Dont fail processing event when mxid_mapping is unknown
devonh Jun 6, 2023
c0be935
Use userID for room alias handling
devonh Jun 6, 2023
c2aac0f
Properly lookup userID when removing room alias
devonh Jun 6, 2023
34edfff
ToClientEvent now directly uses the provided userID for sender field
devonh Jun 6, 2023
051aa22
Update to latest gmsl
devonh Jun 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion appservice/consumers/roomserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,10 +233,16 @@ func (s *appserviceState) backoffAndPause(err error) error {
//
// TODO: This should be cached, see https://github.com/matrix-org/dendrite/issues/1682
func (s *OutputRoomEventConsumer) appserviceIsInterestedInEvent(ctx context.Context, event *types.HeaderedEvent, appservice *config.ApplicationService) bool {
user := ""
userID, err := event.UserID()
if err == nil {
user = userID.String()
}

switch {
case appservice.URL == "":
return false
case appservice.IsInterestedInUserID(event.Sender()):
case appservice.IsInterestedInUserID(user):
return true
case appservice.IsInterestedInRoomID(event.RoomID()):
return true
Expand Down
41 changes: 36 additions & 5 deletions clientapi/routing/directory.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,25 @@ func SetLocalAlias(
return *resErr
}

userID, err := spec.NewUserID(device.UserID, true)
if err != nil {
return util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{Err: "UserID for device is invalid"},
}
}

deviceSenderID, err := rsAPI.QuerySenderIDForUser(req.Context(), alias, *userID)
if err != nil {
return util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{Err: "Could not find SenderID for this device"},
}
}
queryReq := roomserverAPI.SetRoomAliasRequest{
UserID: device.UserID,
RoomID: r.RoomID,
Alias: alias,
SenderID: deviceSenderID,
RoomID: r.RoomID,
Alias: alias,
}
var queryRes roomserverAPI.SetRoomAliasResponse
if err := rsAPI.SetRoomAlias(req.Context(), &queryReq, &queryRes); err != nil {
Expand Down Expand Up @@ -215,9 +230,25 @@ func RemoveLocalAlias(
alias string,
rsAPI roomserverAPI.ClientRoomserverAPI,
) util.JSONResponse {
userID, err := spec.NewUserID(device.UserID, true)
if err != nil {
return util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{Err: "UserID for device is invalid"},
}
}

deviceSenderID, err := rsAPI.QuerySenderIDForUser(req.Context(), alias, *userID)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we expect this to create the sender ID if one does not exist? I guess in this case no, but in some cases yes?

if err != nil {
return util.JSONResponse{
Code: http.StatusInternalServerError,
JSON: spec.InternalServerError{Err: "Could not find SenderID for this device"},
}
}

queryReq := roomserverAPI.RemoveRoomAliasRequest{
Alias: alias,
UserID: device.UserID,
Alias: alias,
SenderID: deviceSenderID,
}
var queryRes roomserverAPI.RemoveRoomAliasResponse
if err := rsAPI.RemoveRoomAlias(req.Context(), &queryReq, &queryRes); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion clientapi/routing/redaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func SendRedaction(
// "Users may redact their own events, and any user with a power level greater than or equal
// to the redact power level of the room may redact events there"
// https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-rooms-roomid-redact-eventid-txnid
allowedToRedact := ev.Sender() == device.UserID
allowedToRedact := ev.SenderID() == device.UserID // TODO: Should replace device.UserID with device...PerRoomKey
if !allowedToRedact {
plEvent := roomserverAPI.GetStateEvent(req.Context(), rsAPI, roomID, gomatrixserverlib.StateKeyTuple{
EventType: spec.MRoomPowerLevels,
Expand Down
9 changes: 7 additions & 2 deletions federationapi/internal/perform.go
Original file line number Diff line number Diff line change
Expand Up @@ -509,10 +509,15 @@ func (r *FederationInternalAPI) SendInvite(
event gomatrixserverlib.PDU,
strippedState []gomatrixserverlib.InviteStrippedState,
) (gomatrixserverlib.PDU, error) {
_, origin, err := r.cfg.Matrix.SplitLocalID('@', event.Sender())
inviter, err := event.UserID()
if err != nil {
return nil, err
}
// For portable accounts, we need to verify the inviter domain is still associated with this server.
// The userID of the inviter may have changed to another server in which case we cannot send the invite.
if !r.cfg.Matrix.IsLocalServerName(inviter.Domain()) {
return nil, fmt.Errorf("the invite must be from a local user")
devonh marked this conversation as resolved.
Show resolved Hide resolved
}

if event.StateKey() == nil {
return nil, errors.New("invite must be a state event")
Expand Down Expand Up @@ -542,7 +547,7 @@ func (r *FederationInternalAPI) SendInvite(
return nil, fmt.Errorf("gomatrixserverlib.NewInviteV2Request: %w", err)
}

inviteRes, err := r.federation.SendInviteV2(ctx, origin, destination, inviteReq)
inviteRes, err := r.federation.SendInviteV2(ctx, inviter.Domain(), destination, inviteReq)
if err != nil {
return nil, fmt.Errorf("r.federation.SendInviteV2: failed to send invite: %w", err)
}
Expand Down
10 changes: 5 additions & 5 deletions federationapi/routing/leave.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ func SendLeave(
JSON: spec.BadJSON("No state key was provided in the leave event."),
}
}
if !event.StateKeyEquals(event.Sender()) {
if !event.StateKeyEquals(event.SenderID()) {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: spec.BadJSON("Event state key must match the event sender."),
Expand All @@ -223,13 +223,13 @@ func SendLeave(
// Check that the sender belongs to the server that is sending us
// the request. By this point we've already asserted that the sender
// and the state key are equal so we don't need to check both.
var serverName spec.ServerName
if _, serverName, err = gomatrixserverlib.SplitID('@', event.Sender()); err != nil {
sender, err := event.UserID()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And for pseudo IDs we skip this check.

if err != nil {
return util.JSONResponse{
Code: http.StatusForbidden,
JSON: spec.Forbidden("The sender of the join is invalid"),
}
} else if serverName != request.Origin() {
} else if sender.Domain() != request.Origin() {
return util.JSONResponse{
Code: http.StatusForbidden,
JSON: spec.Forbidden("The sender does not match the server that originated the request"),
Expand Down Expand Up @@ -291,7 +291,7 @@ func SendLeave(
}
}
verifyRequests := []gomatrixserverlib.VerifyJSONRequest{{
ServerName: serverName,
ServerName: sender.Domain(),
Message: redacted,
AtTS: event.OriginServerTS(),
StrictValidityChecking: true,
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ require (
github.com/matrix-org/dugong v0.0.0-20210921133753-66e6b1c67e2e
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530
github.com/matrix-org/gomatrixserverlib v0.0.0-20230531155817-0e3adf17bee6
github.com/matrix-org/gomatrixserverlib v0.0.0-20230603021032-d30b8fdc7ced
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66
github.com/mattn/go-sqlite3 v1.14.16
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,8 @@ github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91 h1:s7fexw
github.com/matrix-org/go-sqlite3-js v0.0.0-20220419092513-28aa791a1c91/go.mod h1:e+cg2q7C7yE5QnAXgzo512tgFh1RbQLC0+jozuegKgo=
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530 h1:kHKxCOLcHH8r4Fzarl4+Y3K5hjothkVW5z7T1dUM11U=
github.com/matrix-org/gomatrix v0.0.0-20220926102614-ceba4d9f7530/go.mod h1:/gBX06Kw0exX1HrwmoBibFA98yBk/jxKpGVeyQbff+s=
github.com/matrix-org/gomatrixserverlib v0.0.0-20230531155817-0e3adf17bee6 h1:Kh1TNvJDhWN5CdgtICNUC4G0wV2km51LGr46Dvl153A=
github.com/matrix-org/gomatrixserverlib v0.0.0-20230531155817-0e3adf17bee6/go.mod h1:H9V9N3Uqn1bBJqYJNGK1noqtgJTaCEhtTdcH/mp50uU=
github.com/matrix-org/gomatrixserverlib v0.0.0-20230603021032-d30b8fdc7ced h1:pbCM+nno+r2wW3jwxP65xmkzk6008CdMNZaOWYBwB1c=
github.com/matrix-org/gomatrixserverlib v0.0.0-20230603021032-d30b8fdc7ced/go.mod h1:H9V9N3Uqn1bBJqYJNGK1noqtgJTaCEhtTdcH/mp50uU=
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a h1:awrPDf9LEFySxTLKYBMCiObelNx/cBuv/wzllvCCH3A=
github.com/matrix-org/pinecone v0.11.1-0.20230210171230-8c3b24f2649a/go.mod h1:HchJX9oKMXaT2xYFs0Ha/6Zs06mxLU8k6F1ODnrGkeQ=
github.com/matrix-org/util v0.0.0-20221111132719-399730281e66 h1:6z4KxomXSIGWqhHcfzExgkH3Z3UkIXry4ibJS4Aqz2Y=
Expand Down
9 changes: 7 additions & 2 deletions internal/pushrules/evaluate.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,12 @@ func ruleMatches(rule *Rule, kind Kind, event gomatrixserverlib.PDU, ec Evaluati
return rule.RuleID == event.RoomID(), nil

case SenderKind:
return rule.RuleID == event.Sender(), nil
userID := ""
sender, err := event.UserID()
if err == nil {
userID = sender.String()
}
return rule.RuleID == userID, nil

default:
return false, nil
Expand Down Expand Up @@ -143,7 +148,7 @@ func conditionMatches(cond *Condition, event gomatrixserverlib.PDU, ec Evaluatio
return cmp(n), nil

case SenderNotificationPermissionCondition:
return ec.HasPowerLevel(event.Sender(), cond.Key)
return ec.HasPowerLevel(event.SenderID(), cond.Key)

default:
return false, nil
Expand Down
8 changes: 4 additions & 4 deletions internal/pushrules/evaluate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ func TestRuleMatches(t *testing.T) {
{"contentMatch", ContentKind, Rule{Enabled: true, Pattern: pointer("b")}, `{"content":{"body":"abc"}}`, true},
{"contentNoMatch", ContentKind, Rule{Enabled: true, Pattern: pointer("d")}, `{"content":{"body":"abc"}}`, false},

{"roomMatch", RoomKind, Rule{Enabled: true, RuleID: "!room@example.com"}, `{"room_id":"!room@example.com"}`, true},
{"roomNoMatch", RoomKind, Rule{Enabled: true, RuleID: "!room@example.com"}, `{"room_id":"!otherroom@example.com"}`, false},
{"roomMatch", RoomKind, Rule{Enabled: true, RuleID: "!room:example.com"}, `{"room_id":"!room:example.com"}`, true},
{"roomNoMatch", RoomKind, Rule{Enabled: true, RuleID: "!room:example.com"}, `{"room_id":"!otherroom:example.com"}`, false},

{"senderMatch", SenderKind, Rule{Enabled: true, RuleID: "@user@example.com"}, `{"sender":"@user@example.com"}`, true},
{"senderNoMatch", SenderKind, Rule{Enabled: true, RuleID: "@user@example.com"}, `{"sender":"@otheruser@example.com"}`, false},
{"senderMatch", SenderKind, Rule{Enabled: true, RuleID: "@user:example.com"}, `{"sender":"@user:example.com"}`, true},
{"senderNoMatch", SenderKind, Rule{Enabled: true, RuleID: "@user:example.com"}, `{"sender":"@otheruser:example.com"}`, false},
}
for _, tst := range tsts {
t.Run(tst.Name, func(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions roomserver/api/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import "regexp"
// SetRoomAliasRequest is a request to SetRoomAlias
type SetRoomAliasRequest struct {
// ID of the user setting the alias
UserID string `json:"user_id"`
SenderID string `json:"user_id"`
// New alias for the room
Alias string `json:"alias"`
// The room ID the alias is referring to
Expand Down Expand Up @@ -62,7 +62,7 @@ type GetAliasesForRoomIDResponse struct {
// RemoveRoomAliasRequest is a request to RemoveRoomAlias
type RemoveRoomAliasRequest struct {
// ID of the user removing the alias
UserID string `json:"user_id"`
SenderID string `json:"user_id"`
// The room alias to remove
Alias string `json:"alias"`
}
Expand Down
7 changes: 7 additions & 0 deletions roomserver/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ type InputRoomEventsAPI interface {
)
}

type QuerySenderIDAPI interface {
// Accepts either roomID or alias
devonh marked this conversation as resolved.
Show resolved Hide resolved
QuerySenderIDForUser(ctx context.Context, roomAliasOrID string, userID spec.UserID) (string, error)
QueryUserIDForSender(ctx context.Context, roomAliasOrID string, senderID string) (spec.UserID, error)
}

// Query the latest events and state for a room from the room server.
type QueryLatestEventsAndStateAPI interface {
QueryLatestEventsAndState(ctx context.Context, req *QueryLatestEventsAndStateRequest, res *QueryLatestEventsAndStateResponse) error
Expand Down Expand Up @@ -158,6 +164,7 @@ type ClientRoomserverAPI interface {
QueryLatestEventsAndStateAPI
QueryBulkStateContentAPI
QueryEventsAPI
QuerySenderIDAPI
QueryMembershipForUser(ctx context.Context, req *QueryMembershipForUserRequest, res *QueryMembershipForUserResponse) error
QueryMembershipsForRoom(ctx context.Context, req *QueryMembershipsForRoomRequest, res *QueryMembershipsForRoomResponse) error
QueryRoomsForUser(ctx context.Context, req *QueryRoomsForUserRequest, res *QueryRoomsForUserResponse) error
Expand Down
4 changes: 2 additions & 2 deletions roomserver/api/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -463,10 +463,10 @@ type MembershipQuerier struct {
Roomserver FederationRoomserverAPI
}

func (mq *MembershipQuerier) CurrentMembership(ctx context.Context, roomID spec.RoomID, userID spec.UserID) (string, error) {
func (mq *MembershipQuerier) CurrentMembership(ctx context.Context, roomID spec.RoomID, senderID string) (string, error) {
req := QueryMembershipForUserRequest{
RoomID: roomID.String(),
UserID: userID.String(),
UserID: senderID,
}
res := QueryMembershipForUserResponse{}
err := mq.Roomserver.QueryMembershipForUser(ctx, &req, &res)
Expand Down
14 changes: 7 additions & 7 deletions roomserver/internal/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (r *RoomserverInternalAPI) SetRoomAlias(
response.AliasExists = false

// Save the new alias
if err := r.DB.SetRoomAlias(ctx, request.Alias, request.RoomID, request.UserID); err != nil {
if err := r.DB.SetRoomAlias(ctx, request.Alias, request.RoomID, request.SenderID); err != nil {
devonh marked this conversation as resolved.
Show resolved Hide resolved
return err
}

Expand Down Expand Up @@ -119,7 +119,7 @@ func (r *RoomserverInternalAPI) RemoveRoomAlias(
request *api.RemoveRoomAliasRequest,
response *api.RemoveRoomAliasResponse,
) error {
_, virtualHost, err := r.Cfg.Global.SplitLocalID('@', request.UserID)
_, virtualHost, err := r.Cfg.Global.SplitLocalID('@', request.SenderID)
devonh marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return err
}
Expand All @@ -140,7 +140,7 @@ func (r *RoomserverInternalAPI) RemoveRoomAlias(
return fmt.Errorf("r.DB.GetCreatorIDForAlias: %w", err)
}

if creatorID != request.UserID {
if creatorID != request.SenderID {
var plEvent *types.HeaderedEvent
var pls *gomatrixserverlib.PowerLevelContent

Expand All @@ -154,7 +154,7 @@ func (r *RoomserverInternalAPI) RemoveRoomAlias(
return fmt.Errorf("plEvent.PowerLevels: %w", err)
}

if pls.UserLevel(request.UserID) < pls.EventLevel(spec.MRoomCanonicalAlias, true) {
if pls.UserLevel(request.SenderID) < pls.EventLevel(spec.MRoomCanonicalAlias, true) {
response.Removed = false
return nil
}
Expand All @@ -172,9 +172,9 @@ func (r *RoomserverInternalAPI) RemoveRoomAlias(
return err
}

sender := request.UserID
if request.UserID != ev.Sender() {
sender = ev.Sender()
sender := request.SenderID
if request.SenderID != ev.SenderID() {
sender = ev.SenderID()
}

_, senderDomain, err := r.Cfg.Global.SplitLocalID('@', sender)
Expand Down
16 changes: 9 additions & 7 deletions roomserver/internal/input/input_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ func (r *Inputer) processRoomEvent(
if roomInfo == nil && !isCreateEvent {
return fmt.Errorf("room %s does not exist for event %s", event.RoomID(), event.EventID())
}
_, senderDomain, err := gomatrixserverlib.SplitID('@', event.Sender())
sender, err := event.UserID()
devonh marked this conversation as resolved.
Show resolved Hide resolved
if err != nil {
return fmt.Errorf("event has invalid sender %q", input.Event.Sender())
return fmt.Errorf("event has invalid sender %q", event.SenderID())
devonh marked this conversation as resolved.
Show resolved Hide resolved
}

// If we already know about this outlier and it hasn't been rejected
Expand Down Expand Up @@ -193,9 +193,9 @@ func (r *Inputer) processRoomEvent(
serverRes.ServerNames = append(serverRes.ServerNames, input.Origin)
delete(servers, input.Origin)
}
if senderDomain != input.Origin && senderDomain != r.Cfg.Matrix.ServerName {
serverRes.ServerNames = append(serverRes.ServerNames, senderDomain)
delete(servers, senderDomain)
if sender.Domain() != input.Origin && sender.Domain() != r.Cfg.Matrix.ServerName {
serverRes.ServerNames = append(serverRes.ServerNames, sender.Domain())
delete(servers, sender.Domain())
devonh marked this conversation as resolved.
Show resolved Hide resolved
}
for server := range servers {
serverRes.ServerNames = append(serverRes.ServerNames, server)
Expand Down Expand Up @@ -451,7 +451,7 @@ func (r *Inputer) processRoomEvent(
}

// Handle remote room upgrades, e.g. remove published room
if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(senderDomain) {
if event.Type() == "m.room.tombstone" && event.StateKeyEquals("") && !r.Cfg.Matrix.IsLocalServerName(sender.Domain()) {
devonh marked this conversation as resolved.
Show resolved Hide resolved
if err = r.handleRemoteRoomUpgrade(ctx, event); err != nil {
return fmt.Errorf("failed to handle remote room upgrade: %w", err)
}
Expand Down Expand Up @@ -493,7 +493,7 @@ func (r *Inputer) processRoomEvent(
func (r *Inputer) handleRemoteRoomUpgrade(ctx context.Context, event gomatrixserverlib.PDU) error {
oldRoomID := event.RoomID()
newRoomID := gjson.GetBytes(event.Content(), "replacement_room").Str
return r.DB.UpgradeRoom(ctx, oldRoomID, newRoomID, event.Sender())
return r.DB.UpgradeRoom(ctx, oldRoomID, newRoomID, event.SenderID())
}

// processStateBefore works out what the state is before the event and
Expand Down Expand Up @@ -828,11 +828,13 @@ func (r *Inputer) kickGuests(ctx context.Context, event gomatrixserverlib.PDU, r
continue
}

// TODO: pseudoIDs: get userID for room using state key (which is now senderID)
localpart, senderDomain, err := gomatrixserverlib.SplitID('@', *memberEvent.StateKey())
if err != nil {
continue
}

// TODO: pseudoIDs: query account by state key (which is now senderID)
accountRes := &userAPI.QueryAccountByLocalpartResponse{}
if err = r.UserAPI.QueryAccountByLocalpart(ctx, &userAPI.QueryAccountByLocalpartRequest{
Localpart: localpart,
Expand Down
4 changes: 2 additions & 2 deletions roomserver/internal/perform/perform_backfill.go
Original file line number Diff line number Diff line change
Expand Up @@ -484,8 +484,8 @@ FindSuccessor:
// Store the server names in a temporary map to avoid duplicates.
serverSet := make(map[spec.ServerName]bool)
for _, event := range memberEvents {
if _, senderDomain, err := gomatrixserverlib.SplitID('@', event.Sender()); err == nil {
serverSet[senderDomain] = true
if sender, err := event.UserID(); err == nil {
serverSet[sender.Domain()] = true
}
}
var servers []spec.ServerName
Expand Down
6 changes: 3 additions & 3 deletions roomserver/internal/perform/perform_create_room.go
Original file line number Diff line number Diff line change
Expand Up @@ -350,9 +350,9 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo
// been taken.
if roomAlias != "" {
aliasReq := api.SetRoomAliasRequest{
Alias: roomAlias,
RoomID: roomID.String(),
UserID: userID.String(),
Alias: roomAlias,
RoomID: roomID.String(),
SenderID: userID.String(),
}

var aliasResp api.SetRoomAliasResponse
Expand Down
Loading