Skip to content

Commit

Permalink
Merge pull request #440 from matrix-org/kegan/patch-device-lists
Browse files Browse the repository at this point in the history
e2ee extension: ensure null is not sent when we mean []
  • Loading branch information
kegsay authored May 20, 2024
2 parents d5b3e4b + 451f6fb commit f25087d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
6 changes: 6 additions & 0 deletions sync3/extensions/e2ee.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@ func (r *E2EERequest) ProcessInitial(ctx context.Context, res *Response, extCtx
extRes.OTKCounts = dd.OTKCounts
hasUpdates = true
}
if dd.DeviceListChanged == nil {
dd.DeviceListChanged = make([]string, 0)
}
if dd.DeviceListLeft == nil {
dd.DeviceListLeft = make([]string, 0)
}
if len(dd.DeviceListChanged) > 0 || len(dd.DeviceListLeft) > 0 {
extRes.DeviceLists = &E2EEDeviceList{
Changed: dd.DeviceListChanged,
Expand Down
26 changes: 26 additions & 0 deletions tests-integration/extensions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,32 @@ func TestExtensionE2EE(t *testing.T) {
})
m.MatchResponse(t, res, m.MatchDeviceLists(wantChanged, wantLeft))

// check that empty lists aren't serialised as null
v2.queueResponse(alice, sync2.SyncResponse{
DeviceLists: struct {
Changed []string `json:"changed,omitempty"`
Left []string `json:"left,omitempty"`
}{
Changed: wantChanged,
},
})
v2.waitUntilEmpty(t, alice)
res = v3.mustDoV3RequestWithPos(t, aliceToken, res.Pos, sync3.Request{
Lists: map[string]sync3.RequestList{"a": {
Ranges: sync3.SliceRanges{
[2]int64{0, 10}, // doesn't matter
},
}},
// enable the E2EE extension
Extensions: extensions.Request{
E2EE: &extensions.E2EERequest{
Core: extensions.Core{Enabled: &boolTrue},
},
},
})
if res.Extensions.E2EE.DeviceLists.Left == nil {
t.Errorf("left array should be [] not null")
}
}

// Checks that to-device messages are passed from v2 to v3
Expand Down

0 comments on commit f25087d

Please sign in to comment.