syncapi/requestpool: fix initial sync logic error in appendAccountData() (#1594)

* requestpool: fix initial sync logic error in appendAccountData()

In initial sync, req.since is no longer nil, but instead,
req.since.PDUPosition() and req.since.EDUPosition() returns 0.

This ensures forgotten rooms do not come back as zombies.

* syncapi/requestpool: reintroduce req.since == nil check
This commit is contained in:
Ariadne Conill 2020-12-01 10:01:34 -07:00 committed by GitHub
parent c667a19775
commit d5b8260196
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -328,7 +328,7 @@ func (rp *RequestPool) appendAccountData(
// data keys were set between two message. This isn't a huge issue since the // data keys were set between two message. This isn't a huge issue since the
// duplicate data doesn't represent a huge quantity of data, but an optimisation // duplicate data doesn't represent a huge quantity of data, but an optimisation
// here would be making sure each data is sent only once to the client. // here would be making sure each data is sent only once to the client.
if req.since == nil { if req.since == nil || (req.since.PDUPosition() == 0 && req.since.EDUPosition() == 0) {
// If this is the initial sync, we don't need to check if a data has // If this is the initial sync, we don't need to check if a data has
// already been sent. Instead, we send the whole batch. // already been sent. Instead, we send the whole batch.
dataReq := &userapi.QueryAccountDataRequest{ dataReq := &userapi.QueryAccountDataRequest{