summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-01-26sync: avoid setenv()setenvPatrick Ohly6-44/+81
set/getenv() are not thread-safe, and a recent bug report via private email shows that this does cause segfaults: Thread 4 (Thread 19251): .... Thread 1 (Thread 19311): ... In this case, DLT was used and the setenv call was setting the LIBSYNTHESIS_<context> variables. The solution is to avoid setenv() in code which might run in parallel to other threads: - DLT-related variables are set at the beginning of syncevo-dbus-server startup which then gets inherited by syncevo-dbus-helper and in the environment prepared for syncevo-local-sync (because the latter might run with a different log level) - the default for SYNCEVOLUTION_PBAP_SYNC is now "incremental" everywhere and SyncContext is told about the special mode where it needs to keep photo data differently, i.e. setting SYNCEVOLUTION_PBAP_SYNC in dbus-sync.cpp for PBAP syncing is no longer necessary Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09autotools, NEWS: SyncEvolution 1.5.3syncevolution-1-5-3Patrick Ohly3-2/+63
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09gdb-dump-stack: automatic stack dumpsPatrick Ohly1-0/+79
This is meant to be used by automated testing, with gdb acting as wrapper around a command so that stack traces are created automatically when something goes wrong. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09sys.supp: more dl suppressionsPatrick Ohly1-0/+20
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09EDS: more generic open retry handlingPatrick Ohly1-9/+7
Recent EDS started to exhibit race conditions when opening a database (for example, https://bugzilla.gnome.org/show_bug.cgi?id=791306). Opening was already tried again for a certain known error in some old EDS version. Now it is tried five times with a delay of one second for all errors. The advantage is that this does not depend on accurately detecting the race condition error. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09sys.supp: suppress EDS/glib closure issuePatrick Ohly1-0/+30
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09oauth2.cpp: fix usage of curlPatrick Ohly1-1/+3
When libcurl was selected instead of libsoup, compilation failed because the necessary header file was missing and the direct assignment of a plain pointer to the shared_ptr failed. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09autotools: be more selective about suppressing deprecation warningsPatrick Ohly4-5/+10
Suppressing the warning for all code hid the deprecation warning about auto_ptr, which is something that should have been fixed before. Now only some code still suppresses the warning (GTK UI, Akonadi) because there is no time to also update and test that part. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09SoupTransportAgent: require libsoup 2.42, no deprecated methodsPatrick Ohly5-39/+56
This allows us to get rid of deprecated function calls. We no longer need to set a default proxy either, the newer libsoup does that itself by default (https://developer.gnome.org/libsoup/stable/libsoup-session-porting.html). Not mentioned in the porting guide is that the based soup session now has a 60s timeout by default. We don't want to time out. We also need to quit the event loop explicitly when timing out. Somehow that wasn't necessary before. When using the generic SoupSession, it is no longer guaranteed that canceling an operation invokes the callbacks before returning. Therefore we have to be prepared for callbacks occuring after destructing the SoupTransportAgent. This is achieved by storing all SoupTransportAgent in a boost::shared_ptr and letting the instance know about that with a weak_ptr, which then can be used by the callbacks. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-09timeout.h: move from D-Bus server to syncevoPatrick Ohly8-6/+7
The helper class is also useful outside of the D-Bus server, for example in the glib-based SoupTransportAgent. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: replace auto_ptr with unique_ptrPatrick Ohly19-78/+1140
auto_ptr has been deprecated for a while now. unique_ptr can be taken for granted now, so use that instead. GDBusMessage requires a custom deleter. Not sure how auto_ptr handled that before. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: try to use C++14, rely on C++11Patrick Ohly1-0/+8
This makes it possible to use C++11 features. Choosing C++14 when available gives us advance warning when something might break under C++14. Test builds on a system with only C++11 and another with C++14 are needed to ensure that both really works. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03test: honor warning flagsPatrick Ohly1-1/+1
Without them, --enable-warnings=fatal was ignored for the D-Bus test program, causing deprecation warnings about auto_ptr to be printed without aborting the build. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03testing: work around Google CalDAV RECURRENCE-IDPatrick Ohly2-44/+18
Stand-alone events with RECURRENCE-ID get mangled by the server: it converts the RECURRENCE-ID time to UTC. Reported in: https://stackoverflow.com/questions/47811670/detached-recurrence-without-parent-event For now we ignore the error (googlecalendar source) or avoid it (testItems). Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03testing: exclude PHOTO data from Google Contacts sync testsPatrick Ohly16-358/+5
The server started to re-encode the image, thus breaking the strict comparison that is done for these tests. Normal testing allows such changes for the Google server by ignoring PHOTO data, but in these tests we want comparison to be strict, so we have to change the test data. The downside is less test coverage. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03autotools: let caller suppress automatic lib dependenciesPatrick Ohly3-10/+2
shlibs.local was used in combination with explicit ebook/ecal/ical dependencies to replace the automatic dependencies. It needs to be maintained together with those explicit dependencies, so it makes more sense to use a file provided by the code which calls make to build releases. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03autotools: building of binaries optionalPatrick Ohly3-4/+27
When building and installing backends on additional build platforms, linking the binaries is both unnecessary and sometimes problematic (for example, helper libraries not available in a version that works). Therefore configure arguments can be used to disable linking of the binaries. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: initialize all members of SyncSourceEventPatrick Ohly1-1/+4
While not necessary (attributes are not read for NOP event), it's still cleaner to also initialize them. Found with cppcheck. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03TDEPIMNotesSource.h: remove unused kn_dcopPatrick Ohly1-1/+0
It's a local variable in the implementation. Found with cppcheck. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03icaltz-util.c: avoid undefined signed int shiftingPatrick Ohly1-1/+1
The result of shifting a signed int is undefined. Better operate on unsigned int of the same size. Found by clang or cppcheck. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03SynthesisDBPlugin.cpp: fix error pathPatrick Ohly1-1/+1
This is a cut-and-paste error from upstream libsynthesis: an error code was returned in an error case where a boolean should have been returned. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: const and const ref enhancementsPatrick Ohly3-5/+4
Found with clang and/or cppcheck. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: implement missing copy operatorPatrick Ohly3-0/+14
It's good practice to implement the copy operator, even if not needed at the moment. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03C++: avoid non-standard typeofPatrick Ohly6-22/+31
Building with recent Clang in C++ mode fails when using the non-standard typeof operator. We can't rely on the new(ish) decltype yet, so use the Boost implementation instead. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03ClientTest.cpp: clean cppcheck warningsPatrick Ohly1-78/+54
The only actual error was incorrect nesting of ifdef/endif and comments. The iterator change avoids a false positive where cppcheck's for correct begin()/end() comparisons fail. It's also a bit shorter and cleaner. The copy operator is not needed. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03runtests.py: suppress m_source cppcheck warningPatrick Ohly1-1/+3
Recent cppcheck warns about m_source not being initialized, which is a false positive (it's a reference and gets initialized). Inline suppressions did not work, so instead disable the entire warning for SyncSource.h. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03wrappercheck.sh: detect premature exit while waiting for D-Bus daemonPatrick Ohly1-5/+4
The "waiting for daemon to connect to D-Bus" loop did not check whether daemon was still running at all, causing testing to get stuck occasionally when the daemon failed. THe loop waiting for output already checked that, but can be simplified. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03GNOME: retry keyring operationsPatrick Ohly1-30/+82
Sometimes GNOME keyring and libsecret fail to set up the right temporary keys (https://bugzilla.gnome.org/show_bug.cgi?id=778357). This has been fixed upstream, but still breaks with the distros used by the automated testing occassionally. Retrying the operations after disconnecting from the server is an attempt to recover from this sporadic error. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03GNOME: replace gnome-keyring with libsecret (FDO #104219)Patrick Ohly2-106/+73
The GNOME keyring library has been obsoleted for a long time now, long enough that the replacement libsecret is available on all supported distros. Therefore we can switch unconditionally. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2018-01-03libical: support libical v3 (FDO #104220)Patrick Ohly2-7/+6
libical v3 removes some deprecated functions (like icaltime_from_timet) and removes the "is_utc" member from icaltimetype. The replacement code works with old and new libical and thus needs no ifdefs. However, that struct is part of the ABI, which impacts the tricks that syncevolution.org binaries use to get built against libical v2 and then run with more recent libs like libical v3. Depending on the platform ABI, it may still be okay, because the calling code in SyncEvolution reserves and copies enough bytes for the icaltimetype instances and because that code never directly accesses any member (is_date, is_daylight, zone) whose offset changes. Original author: Milan Crha <mcrha@redhat.com> Slightly modified it so that icaltime_t.zone is not set. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2016-11-08.gitignore: ignore test-driversyncevolution-1-5-2Patrick Ohly1-0/+1
autotools started creating that after the recent update to Ubuntu Trusty as main build platform.
2016-11-08configure.ac: 1.5.2Patrick Ohly1-1/+1
2016-11-08NEWS: finalize 1.5.2Patrick Ohly1-1/+4
Mention the TDE desktop, today's date added.
2016-11-04eds_event.ics.exchange.tem.patch: adapt to Exchange 2016Patrick Ohly1-16/+18
Switching the testing to Exchange 2016 revealed a slightly different time zone mangling than before: - the "US & C" time zone name already gets truncated before the C - due to recent rules on the server (?), several TZNAMEs get changed Updating the data again...
2016-11-04runtests.py: uninstalled activesyncd + glib schemasPatrick Ohly1-1/+6
The more recent activesyncd uses GSetting schema files. We need to set an env variable if they are nor installed in the default system location.
2016-11-04TDE: fix compile issuePatrick Ohly1-3/+2
When the TDE notes backend was disabled, the code didn't compile because the SE_END_CXX wasn't nested properly inside the ifdef/endif.
2016-11-03SignonAuthProvider: fix ref counting issuePatrick Ohly1-1/+1
The account data was unreferenced once too often, or rather, a suitable ref count increase was missing. A debug build of glib detects that ("GLib: g_variant_unref: assertion 'value->ref_count > 0' failed"), but without that check the code might also crash.
2016-11-03TDE: various fixesdeloptes2-18/+16
Prevents the wallet backend from crashing SyncEvolution when enabled. Functionality not really tested, though. PIM backend had compile problems when enabled.
2016-10-13Merge remote-tracking branch 'origin/for-master/tde' into nightlySyncEvolution Nightly Testing6-13/+36
2016-10-09TDEPIMCalendarSourceRegister.cpp: only grab generic types when activePatrick Ohly1-3/+4
When a backend is inactive, it is meant to ignore generic types like "calendar". The idea behind that is that typically users install or compile just the backends they want, and then ask for the "calendar" backend using the generic sync templates or instructions. When adding the TDEPIM calendar backend, that broke because it also instantiated itself for those terms when active. The other TDEPIM backends already did this as intended. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2016-10-07activesync: fix packaging of activesyncd (FDO #98014)Patrick Ohly1-4/+1
The latest activesyncd contains GSettings schema files which get installed by the top-level makefile, therefore we have to install everything. Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2016-10-07tdepim: fix build issuesPatrick Ohly6-10/+32
The *Register.cpp files and everything they include must compile without hard dependencies on header files which are TDE specific, so add some ifdefs. Compiling with TDE backends disabled broke because of this. When enabled (untested!), it is unclear how some of these *Register.cpp could have worked without including the header file that defines the class they instantiate. Added the necessary includes. A closing } was missing (found by cppcheck, which tests all variations of the code, not just those currently enabled). Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
2016-09-26tde, tdepim: adapt to TDE 14.1tdedeloptes10-146/+682
The notes API changed in TDE 14.1. Also includes several other enhancements (error checking, testing).
2016-09-26tde, tdepim: backend for the TDE desktop (FDO #97780)deloptes21-0/+2906
This is the code for TDE < 14.1.
2016-09-26NEWS: SyncEvolution 1.5.2 snapshotPatrick Ohly1-0/+96
2016-09-26ClientTest: avoid pass-by-valuePatrick Ohly2-20/+20
The CreateSource instance can be big, so passing by reference definitely is better. Found with cppcheck.
2016-09-26dbus-session.sh: avoid using dbus-launchPatrick Ohly1-3/+22
dbus-launch is considered deprecated because of the X11 dependency. See https://lists.debian.org/debian-devel/2016/08/msg00554.html "Mass bug filing: use and misuse of dbus-launch (dbus-x11)" The script still needs to start the D-Bus daemon when used in the nightly testing, so the code now does it as in https://github.com/flatpak/flatpak/commit/6cc8062cfb3f9410d54a27e7ccca77c103e441e8 syncevo-http-server still has some usage of dbus-launch left, but that's strictly for systems which don't have the more modern D-Bus.
2016-09-26syncevo-dbus-server-startup.sh.in: optional start via D-Bus activationPatrick Ohly1-1/+18
With the recent change ("Add a systemd user service as a backend for the D-Bus session services"), activating syncevo-dbus-server via D-Bus will integrate better with systemd. When auto-starting via the .desktop file, we can do the same by activating via D-Bus. We use dbus-send for that, if available. A recent busctl from systemd could also be used, but for example the one in Debian Jessie is still to old. Better use dbus-send. Directly starting the binary is used as fallback. Based on a patch from Simon McVittie.
2016-09-26Add a systemd user service as a backend for the D-Bus session servicesSimon McVittie4-0/+19
On systems with a systemd user session and a D-Bus user bus that uses it for activation, this ensures that syncevo-dbus-server ends up in its own cgroup, instead of being treated as part of dbus.service. If org._01.pim.contacts and org.syncevolution are activated in quick succession, it also prevents a race condition that would make one of the activations fail, similar to <https://bugs.freedesktop.org/show_bug.cgi?id=53220> in telepathy-mission-control.
2016-09-26ObexTransportAgent.cpp: properly shut down connection (FDO #91485)Patrick Ohly1-2/+25
Apparently there's a race condition in the OBEX transport that causes the connection to phones via Bluetooth to be shut down prematurely. Some phones react by doing a slow sync instead of an incremental sync the next time. Waiting during shutdown should address the problem (however, it was not possible to confirm this).