aboutsummaryrefslogtreecommitdiff
path: root/syncapi
diff options
context:
space:
mode:
authorSam Wedgwood <28223854+swedgwood@users.noreply.github.com>2023-08-02 11:12:14 +0100
committerGitHub <noreply@github.com>2023-08-02 11:12:14 +0100
commitc7193e24d06a549b2e4a3bfca2d6e0f6c62d5f80 (patch)
tree19a1284c9d66385618f2f28b1308bb0934744a38 /syncapi
parentaf13fa1c7554fbed802d51421163f81b5b3fbe0d (diff)
Use `*spec.SenderID` for `QuerySenderIDForUser` (#3164)
There are cases where a dendrite instance is unaware of a pseudo ID for a user, the user is not a member of that room. To represent this case, we currently use the 'zero' value, which is often not checked and so causes errors later down the line. To make this case more explict, and to be consistent with `QueryUserIDForSender`, this PR changes this to use a pointer (and `nil` to mean no sender ID). Signed-off-by: `Sam Wedgwood <sam@wedgwood.dev>`
Diffstat (limited to 'syncapi')
-rw-r--r--syncapi/internal/history_visibility.go4
-rw-r--r--syncapi/storage/shared/storage_consumer.go8
2 files changed, 6 insertions, 6 deletions
diff --git a/syncapi/internal/history_visibility.go b/syncapi/internal/history_visibility.go
index ce6846ca..3c230895 100644
--- a/syncapi/internal/history_visibility.go
+++ b/syncapi/internal/history_visibility.go
@@ -144,8 +144,8 @@ func ApplyHistoryVisibilityFilter(
return nil, err
}
senderID, err := rsAPI.QuerySenderIDForUser(ctx, *roomID, *user)
- if err == nil {
- if ev.Type() == spec.MRoomMember && ev.StateKeyEquals(string(senderID)) {
+ if err == nil && senderID != nil {
+ if ev.Type() == spec.MRoomMember && ev.StateKeyEquals(string(*senderID)) {
eventsFiltered = append(eventsFiltered, ev)
continue
}
diff --git a/syncapi/storage/shared/storage_consumer.go b/syncapi/storage/shared/storage_consumer.go
index 746a324f..69e64cc7 100644
--- a/syncapi/storage/shared/storage_consumer.go
+++ b/syncapi/storage/shared/storage_consumer.go
@@ -122,13 +122,13 @@ func (d *Database) StreamEventsToEvents(ctx context.Context, device *userapi.Dev
continue
}
deviceSenderID, err := rsAPI.QuerySenderIDForUser(ctx, *roomID, *userID)
- if err != nil {
+ if err != nil || deviceSenderID == nil {
logrus.WithFields(logrus.Fields{
"event_id": out[i].EventID(),
}).WithError(err).Warnf("Failed to add transaction ID to event")
continue
}
- if deviceSenderID == in[i].SenderID() && device.SessionID == in[i].TransactionID.SessionID {
+ if *deviceSenderID == in[i].SenderID() && device.SessionID == in[i].TransactionID.SessionID {
err := out[i].SetUnsignedField(
"transaction_id", in[i].TransactionID.TransactionID,
)
@@ -527,11 +527,11 @@ func getMembershipFromEvent(ctx context.Context, ev gomatrixserverlib.PDU, userI
return "", ""
}
senderID, err := rsAPI.QuerySenderIDForUser(ctx, *roomID, *fullUser)
- if err != nil {
+ if err != nil || senderID == nil {
return "", ""
}
- if ev.Type() != "m.room.member" || !ev.StateKeyEquals(string(senderID)) {
+ if ev.Type() != "m.room.member" || !ev.StateKeyEquals(string(*senderID)) {
return "", ""
}
membership, err := ev.Membership()