~ci-train-bot/syncevolution/syncevolution-ubuntu-yakkety-landing-098

Viewing all changes in revision 4626.

  • Committer: Patrick Ohly
  • Date: 2015-03-03 09:15:44 UTC
  • Revision ID: git-v1:75115022c525d21341be4113d789eccd6e23cca8
CalDAV: more efficient "is empty" check (FDO #86335)

Since 1.4.99.4, syncing WebDAV collections always checks first
whether there are items in the collections. This was partly done for
slow sync prevention (which is not necessary for empty collections),
partly for the "is the datastore usable" check.

However, this did not take into account that for CalDAV collections,
the entire content gets downloaded for this check. That is because
filtering by item type (VEVENT vs. VJOURNAL) is not implemented
correctly by all servers. So now all CalDAV syncs, whether incremental
or slow, always transfered all items, which is not the
intention (incremental syncs should be fast and efficient).

This commit adds a more efficient isEmpty() check: for simple CardDAV
collections, only luid and etag get transferred, as in
listAllItems(). This is the behavior from 1.5.

For CalDAV, a report with a filter for the content type is used and
the transfer gets aborted after the first item, without actually
double-checking the content of the item. This is different from
listAllItems(), which really transfers the content. This extra content
check would only be needed for some old servers (Radical 0.7) and is
not essential, because reporting "not empty" even when empty is safe.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: