fix(imap): do a single full sync when QRESYNC is enabled #10035
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To minimize the dependence on the cache, we should do a single full sync when
QRESYNC
is enabled. This is more efficient as Horde contains (andQRESYNC
provides) shortcuts for this case.This PR also makes sure that only a single sync token is used when
QRESYNC
is enabled. It will always be the new message token as it is the first one in the partial sync logic and will trigger the actual full sync.This is a follow-up to #8968. We already force all three criteria when
QRESYNC
is enabled and now we are only performing a single call to Horde for syncing.Background
The server reports all changes on the initial
EXAMINE
command whenQRESYNC
is enabled. Only new messages have to be fetched manually afterwards. Changed and vanished messages are reconciled right away without needing to perform any more fetch commands.