syncevolution/src
Patrick Ohly 29c08781ef WebDAV: improved database search (Google, Zimbra)
Zimbra has a principal URL that also serves as home set. When using it
as start URL, SyncEvolution only looked the URL once, without listing
its content, and thus did not find the databases.

When following the Zimbra principal URL indirectly, SyncEvolution did
check all of the collections there recursively. Unfortunately that
also includes many mail folders, causing the scan to abort after
checking 1000 collections (an internal safe guard).

The solution for both includes tracking what to do with a URL. For the
initial URL, only meta data about the URL itself gets
checked. Recursive scanning is only done for the home set. If that
home set contains many collections, scanning is still slow and may run
into the internal safe guard limit. This cannot be avoided because the
CalDAV spec explicitly states that the home set may contain normal
collections which contain other collections, so a client has to do the
recursive scan.

When looking at a specific calendar, Google CalDAV does not report
what the current principal or the home set is and therefore
SyncEvolution stopped after finding just the initial calendar. Now it
detects the lack of meta information and adds all parents also as
candidates that need to be looked at. The downside of this is that it
doesn't know anything about which parents are relevant, so it ends up
checking https://www.google.com/calendar/ and
https://www.google.com/.

In both cases Basic Auth gets rejected with a temporary redirect to
the Google login page, which is something that SyncEvolution must
ignore immediately during scanning without applying the resend
workaround for "temporary rejection of valid credentials" that can
happen for valid Google CalDAV URLs.

The sorting of sub collections is redundant and can be removed,
because sorting already happens when storing the information for each
path. When scanning Google CalDAV starting at
https://www.google.com/calendar/dav/, the main calendar gets listed by
Google first, but because we reorder by sorting by path, it ends up
last in the SyncEvolution database list and thus is not picked as
default. This needs to be fixed separately by preserving the server's
order.
2014-05-05 09:28:14 +02:00
..
backends WebDAV: improved database search (Google, Zimbra) 2014-05-05 09:28:14 +02:00
dbus D-Bus server: delay message processing until server is running 2014-05-05 09:28:13 +02:00
gdbus D-Bus: use streams for direct IPC with GIO 2014-04-01 16:45:09 +02:00
gdbusxx GDBus GIO: copy constructor for GDBusConnectionPtr 2014-05-05 09:28:13 +02:00
gnome-bluetooth GNOME Bluetooth: fix false (?) buffer overflow 2014-01-17 16:15:16 +01:00
gtk-ui GTK-UIs: avoid unnecessary variable initialization 2014-01-17 16:15:15 +01:00
gtk3-ui GTK-UIs: avoid unnecessary variable initialization 2014-01-17 16:15:15 +01:00
syncevo engine: UID support in contact data 2014-05-02 16:43:53 +02:00
synthesis-includes autotools: --disable-core --enable-gui => build only sync-ui and its D-Bus lib 2010-03-23 19:04:06 +01:00
templates templates: don't store username/password for SyncEvolution client 2013-10-01 09:28:38 +02:00
async.patch patch switches to async version of the Evolution API 2007-02-22 19:33:21 +00:00
client-test-app.cpp config: user name -> identity 2013-09-27 08:59:13 -07:00
README.h added missing copyright and license headers 2009-05-11 16:31:17 +02:00
README.templates Merge remote branch 'origin/syncevolution-0-9-branch' 2009-11-30 21:41:53 +01:00
shlibs.local reverted to 0.7 packaging 2008-07-03 19:56:15 +00:00
src.am testing: check that we get the right VTIMEZONE 2014-03-26 09:48:52 +01:00
syncevo-local-sync.cpp local sync: execute 'syncevo-local-sync' on child side, communicate via D-Bus 2012-01-20 13:38:49 +01:00
syncevolution.cpp Logging: thread-safe 2013-05-06 16:28:13 +02:00
testcases.am testing: update packaging and testing of pre-compiled binaries 2014-01-17 16:07:58 +01:00
valgrind.supp ObexTransportAgent: Fix valgrind warnings (MB#10091) 2010-03-12 06:33:13 -08:00

The configuration templates in "templates" get installed into
$(datadir)/syncevolution/templates.

When adding/changing a new server, then only enter the properties
which need to be changed here so that the default values can
be used for the remaining properties.

An icon can be added here for servers. The file name must start with
"icon".

Server configurations must be kept in sync in three different places:
- here (if a server is installed as files)
- in SyncEvolutionConfig.cpp's EvolutionSyncConfig::createServerTemplate()
- in SyncEvolutionCmdline.cpp's test server configs
- in test/test-dbus.py testGetConfigsTemplates()

Note that server icons must come with a suitable license that allows
redistribution.