Imported Upstream version 1.3.99.6 upstream/1.3.99.6
authorPatrick Ohly <patrick.ohly@intel.com>
Mon, 16 Dec 2013 14:36:37 +0000 (14:36 +0000)
committerPatrick Ohly <patrick.ohly@intel.com>
Mon, 16 Dec 2013 14:36:37 +0000 (14:36 +0000)
21 files changed:
Makefile.am
Makefile.in
NEWS
README
configure
configure.ac
src/backends/evolution/EvolutionContactSource.cpp
src/backends/goa/goa.cpp
src/backends/pbap/PbapSyncSource.cpp
src/backends/webdav/CalDAVSource.cpp
src/dbus/server/dbus-sync.cpp
src/dbus/server/pim/examples/sync.py
src/syncevo/LogDLT.cpp
src/syncevo/Logging.cpp
src/syncevo/eds_abi_wrapper.cpp
src/syncevo/eds_abi_wrapper.h
src/synthesis/ChangeLog
src/synthesis/configure
src/synthesis/configure.in
src/synthesis/src/sysync/syncsession.cpp
test/ClientTest.cpp

index ed83c92..b5d6e5f 100644 (file)
@@ -149,7 +149,7 @@ else
 REQUIRES_deb_neon =
 endif
 if ENABLE_ICAL
-REQUIRES_deb_ical = , libical0
+REQUIRES_deb_ical = , libical0 | libical1
 endif
 VERSION_deb = 1:$(STABLE_VERSION)$(VERSION)
 VERSION_rpm = `echo $(VERSION) | sed -e s/-/_/g`
index 2fab6cd..cd368c5 100644 (file)
@@ -3674,7 +3674,7 @@ REQUIRES_deb = --requires="'$(shell set -x; cd checkinstall/dist; LD_LIBRARY_PAT
 # --enable-neon-compatibility in src/backends/webdav:
 # replace dependencies from linking with hard-coded dlopen() dependencies
 @NEON_COMPATIBILITY_TRUE@REQUIRES_deb_neon = , libneon27 (>= 0.29.0) | libneon27-gnutls (>= 0.29.0)
-@ENABLE_ICAL_TRUE@REQUIRES_deb_ical = , libical0
+@ENABLE_ICAL_TRUE@REQUIRES_deb_ical = , libical0 | libical1
 VERSION_deb = 1:$(STABLE_VERSION)$(VERSION)
 VERSION_rpm = `echo $(VERSION) | sed -e s/-/_/g`
 RELEASE = 2
diff --git a/NEWS b/NEWS
index 225fe37..f61e7be 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,14 +1,37 @@
-SyncEvolution 1.3.99.6, xxxxxxxxxx
+SyncEvolution 1.3.99.6, 04.12.2013
 ==================================
 
 This update focuses on SyncEvolution in IVI again. It adds support for
 GENIVI Diagnostic Log and Trace (DLT) and enhances searching in the
 unified address book.
 
-Binaries on syncevolution.org now work with EDS < 3.6 *and* >= 3.6.
+The biggest change for normal Linux desktop users is enhanced support
+for recent distros. Binaries on syncevolution.org now work with EDS >=
+3.6 *and* < 3.6. Distros with libical1 like Ubuntu Saucy are also
+supported. Automated testing was updated to cover these newer
+platforms more thoroughly.
+
 
 Details:
 
+* GNOME Online Accounts: fix D-Bus problem in syncevolution.org binaries
+
+  Support was included in syncevolution.org binaries, but was not
+  tested and did not actually work due to some issue accessing
+  the D-Bus session.
+
+* libsynthesis: partial fix batching of items
+
+  The batching of contact writes introduced with SyncEvolution
+  1.3.99.4 caused problems with non-SyncEvolution SyncML peers when
+  syncing contacts stored in EDS >= 3.6. EDS < 3.6 was not affected.
+
+  That part is fixed. However, even in SyncEvolution<->SyncEvolution
+  syncs another crash was found. This will require more investigation.
+  Clearly the feature is not ready yet for general sync, so for now
+  it is disabled by default and only enabled in the simpler PBAP
+  sync.
+
 * libsynthesis: avoid redundant (and sometimes slow) getaddrbyname() (FDO #70771)
 
   The network lookup of the hostname can be slow (10 second delay when
@@ -73,6 +96,11 @@ Details:
     testing, but might also be useful for per-user setting changes.
   - "none" - disables the feature
 
+* PIM: fix sync.py + multiple peers
+
+  Due to overwriting a variable, configuring multiple different
+  peers did not work.
+
 * D-Bus server: support DLT (FDO #66769)
 
   Diagnostic Log and Trace (DLT) manages a sequence of log messages,
@@ -108,6 +136,18 @@ Details:
     /usr/include/boost/smart_ptr/shared_ptr.hpp:663:22: error: return-statement with a value, in function returning 'void' [-fpermissive]
     make[2]: *** [src/backends/evolution/src_backends_evolution_syncecal_la-EvolutionSyncSource.lo]
 
+* PBAP: add support for obexd 0.48
+
+  obexd 0.48 is almost the same as obexd 0.47, except that it dropped
+  the SetFilter and SetFormat methods in favor of passing a Bluex 5-style
+  filter parameter to PullAll.
+
+  SyncEvolution now supports 4, in words, four different obexd
+  APIs. Sigh.
+
+  This feature was originally announced for SyncEvolution 1.3.99.5,
+  but not actually included in the code yet.
+
 
 SyncEvolution 1.3.99.5, 01.10.2013
 ==================================
@@ -291,15 +331,6 @@ Details:
   A transfer was marked as finished prematurely when encountering the
   "active" Status value, which can happen for longer transfers.
 
-* PBAP: add support for obexd 0.48
-
-  obexd 0.48 is almost the same as obexd 0.47, except that it dropped
-  the SetFilter and SetFormat methods in favor of passing a Bluex 5-style
-  filter parameter to PullAll.
-
-  SyncEvolution now supports 4, in words, four different obexd
-  APIs. Sigh.
-
 * updated tests
 
 
diff --git a/README b/README
index 6c79129..b1ec42b 100644 (file)
--- a/README
+++ b/README
@@ -7,8 +7,8 @@ synchronize personal information management data
 ------------------------------------------------
 
 :Manual section: 1
-:Version: 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386
-:Date: 2013-10-30
+:Version: 1.3.99.6
+:Date: 2013-12-10
 
 
 SYNOPSIS
index 60dceb5..98cfaae 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for syncevolution 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386.
+# Generated by GNU Autoconf 2.69 for syncevolution 1.3.99.6.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='syncevolution'
 PACKAGE_TARNAME='syncevolution'
-PACKAGE_VERSION='1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386'
-PACKAGE_STRING='syncevolution 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386'
+PACKAGE_VERSION='1.3.99.6'
+PACKAGE_STRING='syncevolution 1.3.99.6'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1737,7 +1737,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures syncevolution 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386 to adapt to many kinds of systems.
+\`configure' configures syncevolution 1.3.99.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1807,7 +1807,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of syncevolution 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386:";;
+     short | recursive ) echo "Configuration of syncevolution 1.3.99.6:";;
    esac
   cat <<\_ACEOF
 
@@ -2251,7 +2251,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-syncevolution configure 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386
+syncevolution configure 1.3.99.6
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2891,7 +2891,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by syncevolution $as_me 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386, which was
+It was created by syncevolution $as_me 1.3.99.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3279,10 +3279,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-
-
-
-
 # Minimum version of libsynthesis as defined in its
 # configure script and thus .pc files:
 
@@ -3810,7 +3806,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='syncevolution'
- VERSION='1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386'
+ VERSION='1.3.99.6'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -21205,12 +21201,12 @@ if test -n "$SYNTHESIS_CFLAGS"; then
     pkg_cv_SYNTHESIS_CFLAGS="$SYNTHESIS_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.16.11\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.16.11") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.47.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.47.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SYNTHESIS_CFLAGS=`$PKG_CONFIG --cflags "synthesis >= 3.4.0.16.11" 2>/dev/null`
+  pkg_cv_SYNTHESIS_CFLAGS=`$PKG_CONFIG --cflags "synthesis >= 3.4.0.47.1" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21222,12 +21218,12 @@ if test -n "$SYNTHESIS_LIBS"; then
     pkg_cv_SYNTHESIS_LIBS="$SYNTHESIS_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.16.11\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.16.11") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.47.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.47.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SYNTHESIS_LIBS=`$PKG_CONFIG --libs "synthesis >= 3.4.0.16.11" 2>/dev/null`
+  pkg_cv_SYNTHESIS_LIBS=`$PKG_CONFIG --libs "synthesis >= 3.4.0.47.1" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21248,14 +21244,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               SYNTHESIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "synthesis >= 3.4.0.16.11" 2>&1`
+               SYNTHESIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "synthesis >= 3.4.0.47.1" 2>&1`
         else
-               SYNTHESIS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "synthesis >= 3.4.0.16.11" 2>&1`
+               SYNTHESIS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "synthesis >= 3.4.0.47.1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$SYNTHESIS_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (synthesis >= 3.4.0.16.11) were not met:
+       as_fn_error $? "Package requirements (synthesis >= 3.4.0.47.1) were not met:
 
 $SYNTHESIS_PKG_ERRORS
 
@@ -21342,12 +21338,12 @@ if test -n "$WITH_SYNTHESIS_SRC_CFLAGS"; then
     pkg_cv_WITH_SYNTHESIS_SRC_CFLAGS="$WITH_SYNTHESIS_SRC_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.16.11\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.16.11") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.47.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.47.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_WITH_SYNTHESIS_SRC_CFLAGS=`$PKG_CONFIG --cflags "synthesis >= 3.4.0.16.11" 2>/dev/null`
+  pkg_cv_WITH_SYNTHESIS_SRC_CFLAGS=`$PKG_CONFIG --cflags "synthesis >= 3.4.0.47.1" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21359,12 +21355,12 @@ if test -n "$WITH_SYNTHESIS_SRC_LIBS"; then
     pkg_cv_WITH_SYNTHESIS_SRC_LIBS="$WITH_SYNTHESIS_SRC_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.16.11\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.16.11") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"synthesis >= 3.4.0.47.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "synthesis >= 3.4.0.47.1") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_WITH_SYNTHESIS_SRC_LIBS=`$PKG_CONFIG --libs "synthesis >= 3.4.0.16.11" 2>/dev/null`
+  pkg_cv_WITH_SYNTHESIS_SRC_LIBS=`$PKG_CONFIG --libs "synthesis >= 3.4.0.47.1" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21385,18 +21381,18 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               WITH_SYNTHESIS_SRC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "synthesis >= 3.4.0.16.11" 2>&1`
+               WITH_SYNTHESIS_SRC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "synthesis >= 3.4.0.47.1" 2>&1`
         else
-               WITH_SYNTHESIS_SRC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "synthesis >= 3.4.0.16.11" 2>&1`
+               WITH_SYNTHESIS_SRC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "synthesis >= 3.4.0.47.1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$WITH_SYNTHESIS_SRC_PKG_ERRORS" >&5
 
-       as_fn_error $? "need at least libsynthesis >= 3.4.0.16.11; the latest libsynthesis for SyncEvolution is the one from http://cgit.freedesktop.org/SyncEvolution/" "$LINENO" 5
+       as_fn_error $? "need at least libsynthesis >= 3.4.0.47.1; the latest libsynthesis for SyncEvolution is the one from http://cgit.freedesktop.org/SyncEvolution/" "$LINENO" 5
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-       as_fn_error $? "need at least libsynthesis >= 3.4.0.16.11; the latest libsynthesis for SyncEvolution is the one from http://cgit.freedesktop.org/SyncEvolution/" "$LINENO" 5
+       as_fn_error $? "need at least libsynthesis >= 3.4.0.47.1; the latest libsynthesis for SyncEvolution is the one from http://cgit.freedesktop.org/SyncEvolution/" "$LINENO" 5
 else
        WITH_SYNTHESIS_SRC_CFLAGS=$pkg_cv_WITH_SYNTHESIS_SRC_CFLAGS
        WITH_SYNTHESIS_SRC_LIBS=$pkg_cv_WITH_SYNTHESIS_SRC_LIBS
@@ -26077,7 +26073,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by syncevolution $as_me 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386, which was
+This file was extended by syncevolution $as_me 1.3.99.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -26143,7 +26139,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-syncevolution config.status 1.3.99.5+20131030+SE+05e5911+SYSYNC+69de386
+syncevolution config.status 1.3.99.6
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index a0893b4..91438c6 100644 (file)
@@ -8,7 +8,7 @@ dnl Invoke autogen.sh to produce a configure script.
 #
 # Starting with the 1.1 release cycle, the rpm-style
 # .99 pseudo-version number is used to mark a pre-release.
-AC_INIT([syncevolution], [m4_esyscmd([build/gen-git-version.sh 1.3.99.5])])
+AC_INIT([syncevolution], [m4_esyscmd([build/gen-git-version.sh 1.3.99.6])])
 # STABLE_VERSION=1.0.1+
 AC_SUBST(STABLE_VERSION)
 
@@ -25,7 +25,7 @@ SE_CHECK_FOR_STABLE_RELEASE
 
 # Minimum version of libsynthesis as defined in its
 # configure script and thus .pc files:
-define([SYNTHESIS_MIN_VERSION], [3.4.0.16.11])
+define([SYNTHESIS_MIN_VERSION], [3.4.0.47.1])
 
 # Line above is patched by gen-autotools.sh. Handle
 # both "yes" and "no".
index 545a1d0..f0970b7 100644 (file)
@@ -569,10 +569,10 @@ bool EvolutionContactSource::getContact(const string &luid, EContact **contact,
     // Use switch and let compiler tell us when we don't cover a case.
     switch (m_accessMode) {
     case SYNCHRONOUS:
+    case DEFAULT:
         order = READ_NONE;
         break;
     case BATCHED:
-    case DEFAULT:
         order = m_readAheadOrder;
         break;
     };
@@ -1032,6 +1032,7 @@ EvolutionContactSource::insertItem(const string &uid, const std::string &item, b
         invalidateCachedContact(uid);
         switch (m_accessMode) {
         case SYNCHRONOUS:
+        case DEFAULT:
             if (uid.empty()) {
                 gchar* newuid;
                 if (!e_book_client_add_contact_sync(m_addressbook, contact, &newuid, NULL, gerror)) {
@@ -1049,7 +1050,6 @@ EvolutionContactSource::insertItem(const string &uid, const std::string &item, b
             }
             break;
         case BATCHED:
-        case DEFAULT:
             std::string name = StringPrintf("%s: %s operation #%d",
                                             getDisplayName().c_str(),
                                             uid.empty() ? "add" : ("insert " + uid).c_str(),
index 24c938a..ad32282 100644 (file)
@@ -215,7 +215,7 @@ boost::shared_ptr<AuthProvider> createGOAAuthProvider(const InitStateString &use
     // Because we share the connection, hopefully this won't be too expensive.
     GDBusCXX::DBusErrorCXX err;
     GDBusCXX::DBusConnectionPtr conn = dbus_get_bus_connection("SESSION",
-                                                               "",
+                                                               NULL,
                                                                false,
                                                                &err);
     if (!conn) {
index 91e807d..3fa6280 100644 (file)
@@ -52,7 +52,7 @@
 SE_BEGIN_CXX
 
 #define OBC_SERVICE "org.openobex.client" // obexd < 0.47
-#define OBC_SERVICE_NEW "org.bluez.obex.client" // obexd >= 0.47
+#define OBC_SERVICE_NEW "org.bluez.obex.client" // obexd >= 0.47, including 0.48 (with yet another slight API change!)
 #define OBC_SERVICE_NEW5 "org.bluez.obex" // obexd in Bluez 5.0
 #define OBC_CLIENT_INTERFACE "org.openobex.Client"
 #define OBC_CLIENT_INTERFACE_NEW "org.bluez.obex.Client"
@@ -518,10 +518,18 @@ boost::shared_ptr<PullAll> PbapSession::startPullAll(PullData pullData)
         break;
     }
 
+    bool pullAllWithFiltersFallback = false;
     if (m_obexAPI == OBEXD_OLD ||
         m_obexAPI == OBEXD_NEW) {
-        GDBusCXX::DBusClientCall0(*m_session, "SetFilter")(filter);
-        GDBusCXX::DBusClientCall0(*m_session, "SetFormat")(format);
+        try {
+            GDBusCXX::DBusClientCall0(*m_session, "SetFilter")(filter);
+            GDBusCXX::DBusClientCall0(*m_session, "SetFormat")(format);
+        } catch (...) {
+            // Ignore failure, can happen with 0.48. Instead send filter together
+            // with PullAll method call.
+            Exception::handle(HANDLE_EXCEPTION_NO_ERROR);
+            pullAllWithFiltersFallback = true;
+        }
     }
 
     boost::shared_ptr<PullAll> state(new PullAll);
@@ -537,8 +545,13 @@ boost::shared_ptr<PullAll> PbapSession::startPullAll(PullData pullData)
         SE_LOG_DEBUG(NULL, "Created temporary file for PullAll %s", state->m_tmpFile.filename().c_str());
         GDBusCXX::DBusClientCall1<std::pair<GDBusCXX::DBusObject_t, Params> > pullall(*m_session, "PullAll");
         std::pair<GDBusCXX::DBusObject_t, Params> tuple =
+            pullAllWithFiltersFallback ?
+            // 0.48
+            GDBusCXX::DBusClientCall1<std::pair<GDBusCXX::DBusObject_t, Params> >(*m_session, "PullAll")(state->m_tmpFile.filename(), currentFilter) :
             m_obexAPI == OBEXD_NEW ?
+            // 0.47
             GDBusCXX::DBusClientCall1<std::pair<GDBusCXX::DBusObject_t, Params> >(*m_session, "PullAll")(state->m_tmpFile.filename()) :
+            // 5.x
             GDBusCXX::DBusClientCall2<GDBusCXX::DBusObject_t, Params>(*m_session, "PullAll")(state->m_tmpFile.filename(), currentFilter);
         const GDBusCXX::DBusObject_t &transfer = tuple.first;
         const Params &properties = tuple.second;
@@ -553,6 +566,14 @@ boost::shared_ptr<PullAll> PbapSession::startPullAll(PullData pullData)
         state->m_tmpFileOffset = 0;
         state->m_session = m_self.lock();
     } else {
+        // < 0.47
+        //
+        // This only works once. Incremental syncing with the same
+        // session leads to a "PullAll method with no arguments not
+        // found" error from obex-client. Looks like a bug/limitation
+        // of obex-client < 0.47. Not sure what we should do about
+        // this: disable incremental sync for old obex-client?  Reject
+        // it?  Catch the error and add a better exlanation?
         GDBusCXX::DBusClientCall1<std::string> pullall(*m_session, "PullAll");
         state->m_buffer = pullall();
         state->addVCards(0, state->m_buffer);
index 851224f..9b2a582 100644 (file)
@@ -868,12 +868,6 @@ void CalDAVSource::readSubItem(const std::string &davLUID, const std::string &su
                         if (tzid) {
                             icalproperty_add_parameter(exdate, icalparameter_new_clone(tzid));
                         }
-#if 0
-                        // not needed
-                        if (icalproperty_get_recurrenceid(exdate).is_date) {
-                            icalproperty_add_parameter(exdate, icalparameter_new_value(ICAL_VALUE_DATE));
-                        }
-#endif
                         icalcomponent_add_property(parent, exdate);
                     }
                 }
index 4ad9339..d408095 100644 (file)
@@ -64,6 +64,10 @@ DBusSync::DBusSync(const SessionCommon::SyncParams &params,
         if (params.m_mode == "ephemeral") {
             makeEphemeral();
         } else if (params.m_mode == "pbap") {
+            // Batched writing is off by default, explicitly enable it for PBAP.
+            SE_LOG_DEBUG(NULL, "enabling SYNCEVOLUTION_EDS_ACCESS_MODE=batched");
+            setenv("SYNCEVOLUTION_EDS_ACCESS_MODE", "batched", true);
+
             // "pbap" may only be used by caller when it knows that
             // the mode is safe to use.
             makeEphemeral();
index b6318c4..0121eb5 100755 (executable)
@@ -62,7 +62,7 @@ if options.configure or options.sync or options.remove:
 
     # Use MAC address as UID of peer, but with underscores instead of colons
     # and all in lower case. See https://bugs.freedesktop.org/show_bug.cgi?id=56436
-    uid = options.mac.replace(':', '').lower()
+    peername = options.mac.replace(':', '').lower()
 
 DBusGMainLoop(set_as_default=True)
 bus = dbus.SessionBus()
@@ -164,18 +164,18 @@ print 'available databases: %s' % ([''] + ['peer-' + uid for uid in peers.keys()
 if not error and options.configure:
     peer = {'protocol': 'PBAP',
             'address': options.mac}
-    print 'adding peer config %s = %s' % (uid, peer)
-    manager.SetPeer(uid, peer, **async_args)
+    print 'adding peer config %s = %s' % (peername, peer)
+    manager.SetPeer(peername, peer, **async_args)
     run()
 
 if not error and options.sync:
-    print 'syncing peer %s' % uid
-    manager.SyncPeer(uid, **async_args)
+    print 'syncing peer %s' % peername
+    manager.SyncPeer(peername, **async_args)
     run()
 
 if not error and options.remove:
-    print 'removing peer %s' % uid
-    manager.RemovePeer(uid, **async_args)
+    print 'removing peer %s' % peername
+    manager.RemovePeer(peername, **async_args)
     run()
 
 if options.debug:
index fd80859..18ec96e 100644 (file)
@@ -60,6 +60,7 @@ LoggerDLT::LoggerDLT(const char *appid, const char *description) :
 LoggerDLT::~LoggerDLT()
 {
     DLT_UNREGISTER_CONTEXT(*(DltContext *)m_dltContext);
+    free(m_dltContext);
     DLT_UNREGISTER_APP();
     LoggerDLTInstance = NULL;
 }
index 837c882..e1db9b2 100644 (file)
@@ -247,7 +247,8 @@ Logger::MessageOptions::MessageOptions(Level level) :
     m_file(NULL),
     m_line(0),
     m_function(NULL),
-    m_processName(NULL)
+    m_processName(NULL),
+    m_flags(0)
 {
 }
 
@@ -374,7 +375,8 @@ void Logger::glogFunc(const gchar *logDomain,
 {
     Level level =
         (logLevel & (G_LOG_LEVEL_ERROR|G_LOG_LEVEL_CRITICAL)) ? ERROR :
-        (logLevel & G_LOG_LEVEL_WARNING) ? WARNING :
+        // glib warnings are usually not relevant for users, only for developers.
+        (logLevel & G_LOG_LEVEL_WARNING) ? DEV :
         (logLevel & (G_LOG_LEVEL_MESSAGE|G_LOG_LEVEL_INFO)) ? SHOW :
         DEBUG;
 
index 0f4628c..3a0bd93 100644 (file)
@@ -165,6 +165,7 @@ void *findSymbols(const char *libname, int minver, int maxver,
 
 int EDSAbiHaveEbook, EDSAbiHaveEcal, EDSAbiHaveEdataserver;
 int EDSAbiHaveIcal;
+int EDSAbiHaveIcal1;
 int SyncEvoHaveLibbluetooth;
 
 extern "C" void EDSAbiWrapperInit()
@@ -307,7 +308,11 @@ extern "C" void EDSAbiWrapperInit()
                 &EDSAbiWrapperSingleton.icaltimezone_new, "icaltimezone_new", \
                 &EDSAbiWrapperSingleton.icaltimezone_set_component, "icaltimezone_set_component",
 
+    // icalparameter_new_scheduleagent was added in libical.so.1. We
+    // use it only to detect the libical 1.0 ABI. This works because
+    // all methods in EDS_ABI_WRAPPER_ICAL_R are considered optional.
 #define EDS_ABI_WRAPPER_ICAL_R \
+                &EDSAbiWrapperSingleton.icalparameter_new_scheduleagent, "icalparameter_new_scheduleagent", \
                 &EDSAbiWrapperSingleton.icalcomponent_as_ical_string_r, "icalcomponent_as_ical_string_r", \
                 &EDSAbiWrapperSingleton.icaltime_as_ical_string_r, "icaltime_as_ical_string_r", \
                 &EDSAbiWrapperSingleton.icalproperty_get_value_as_string_r, "icalproperty_get_value_as_string_r",
@@ -354,17 +359,18 @@ extern "C" void EDSAbiWrapperInit()
         // libecal not found above (or not enabled), but libical
         // might still be available, so check for it separately
         ecalhandle =
-            findSymbols("libical.so", 0, 0,
+            findSymbols("libical.so", 0, 1,
                         FIND_SYMBOLS_NEED_ALL, NULL,
                         EDS_ABI_WRAPPER_ICAL_BASE
                         (void *)0);
         ecalhandle =
-            findSymbols("libical.so", 0, 0,
+            findSymbols("libical.so", 0, 1,
                         0, NULL,
                         EDS_ABI_WRAPPER_ICAL_R
                         (void *)0);
     }
     EDSAbiHaveIcal = EDSAbiWrapperSingleton.icalcomponent_add_component != 0;
+    EDSAbiHaveIcal1 = EDSAbiWrapperSingleton.icalparameter_new_scheduleagent != 0;
 # endif // ENABLE_ICAL
 
 # ifdef ENABLE_BLUETOOTH
index bdf1595..d9d14dd 100644 (file)
@@ -98,6 +98,7 @@ extern "C" {
 /** libebook, libecal, libedataserver available (currently checks for e_book_new/e_cal_new/e_source_group_peek_sources) */
 extern int EDSAbiHaveEbook, EDSAbiHaveEcal, EDSAbiHaveEdataserver;
 extern int EDSAbiHaveIcal;
+extern int EDSAbiHaveIcal1; // libical.so.1
 
 /** libbluetooth available (checks sdp_connect()) */
 extern int SyncEvoHaveLibbluetooth;
@@ -251,6 +252,10 @@ struct EDSAbiWrapper {
     icaltimezone *(*icaltimezone_new) (void);
     int (*icaltimezone_set_component) (icaltimezone *zone, icalcomponent *comp);
 
+    // Optional, added in libical.so.1. Can't be called be like this,
+    // we merely check for the method to detect the ABI.
+    void (*icalparameter_new_scheduleagent)(void);
+
     // optional variants which allocate the returned string for us
     const char* (*icaltime_as_ical_string_r) (const struct icaltimetype tt);
     char* (*icalcomponent_as_ical_string_r) (icalcomponent* component);
index 678e359..47aa97d 100644 (file)
@@ -1,7 +1,19 @@
 # Generated by configure.  Do not edit.
-# git revision 69de3861f0d3b98e0f5791baea7254cdb2e7bce5
+# git revision 572bba1742c290607755e6ec2e95c5e0733466f4
 # git tag libsynthesis_3.4.0.47+syncevolution-1-3-99-6
 
+2013-11-21  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure.in:
+
+       autotools: bump version to upstream release
+
+2013-11-21  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/sysync/syncsession.cpp:
+
+       engine: fix LOCERR_AGAIN handling with strict exec ordering
+
 2013-10-29  Patrick Ohly  <patrick.ohly@intel.com>
 
        * configure.in:
        * src/sysync_SDK/Sources/enginemodulebridge.cpp:
        * src/sysync_SDK/Sources/enginemodulebridge.h:
 
-       signature InsertItem/AsKey corrected: ItemID instead of cItemID
-
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+       signature InsertItem/AsKe       * src/gdbus/gdbus-cxx-bridge.h:
 
+       GDBus libdbus: added traits utility class for enum
        * src/sysync/multifielditemtype.cpp:
-       * src/sysync/scriptcontext.cpp:
-       * src/sysync/syncserver.cpp:
+       * src/sysync/s  * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       libsynthesis_srv: changes to make it compilable (not yet
-       functional, however)
+       GDBus GIO: added traits utility class for enum
 
-2009-09-08  Beat Forster  <bfo@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync_SDK/Sources/SDK_util.c:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       buffer size for debug output is no longer restricted to 1kB on
-       Mac/Linux
+       GDBus GIO: fixed SignalWatch4
 
-2009-09-08  Beat Forster  <bfo@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync_SDK/DB_Interfaces/snowwhite/oceanblue.cpp:
-       * src/sysync_SDK/DB_Interfaces/snowwhite/oceanblue.h:
-       * src/sysync_SDK/DB_Interfaces/snowwhite/snowwhite.cpp:
-       * src/sysync_SDK/Sources/SDK_support.cpp:
-       * src/sysync_SDK/Sources/SDK_support.h:
-       * src/sysync_SDK/Sources/enginemodulebase.cpp:
-       * src/sysync_SDK/Sources/enginemodulebase.h:
+       * src/syncevo/DBusTraits.h:
+       * src/syncevo/LocalTransportAgent.cpp:
+       * src/syncevo/syncevo.am:
 
-       array support for tunnel asKey / new itemkey before update/insert
-       operations / UI_Open+Close moved to app_demo
+       D-Bus : moved some traits into separate header file
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/itemfield.cpp:
+       * test/dbus-client-server.cpp:
 
-       DBAPI_TUNNEL_SUPPORT: fixed problem with item TZ reading of DATE
-       and DURATION timestamps
+       dbus-client-server: added test code for client or server dying
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/Targets/ReleasedProducts/clientEngine_opensource_linux/target_options.h:
+       * src/syncevo/util.cpp:
+       * src/syncevo/util.h:
 
-       Comment cosmetics
+       Exception: rethrow internal exceptions after transmitting via
+       D-Bus
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/DB_interfaces/odbc_db/odbcapids.cpp:
+       * src/syncevo/ForkExec.cpp:
 
-       ODBC/SQL: commented out excessive log messages for substitution
+       ForkExec: make stop() and kill() NOPs when child isn't running
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/binfilebase.cpp:
-       * src/sysync/binfilebase.h:
+       * src/syncevo/ForkExec.cpp:
+       * src/syncevo/ForkExec.h:
 
-       binfiles: added checking for record size, should catch
-       32bit<->64bit data migration issues
+       ForkExec: allow sending arbitrary signals in stop()
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-05-08  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/DB_interfaces/api_db/pluginapids.cpp:
-       * src/DB_interfaces/api_db/pluginapids.h:
-       * src/Targets/clientEngine_dbg/target_options.h:
-       * src/global_options.h:
-       * src/sysync/binfileimplclient.cpp:
-       * src/sysync/binfileimplclient.h:
-       * src/sysync/binfileimplds.cpp:
-       * src/sysync/binfileimplds.h:
-       * src/sysync/customimplagent.cpp:
-       * src/sysync/customimplagent.h:
-       * src/sysync/customimplds.cpp:
-       * src/sysync/customimplds.h:
-       * src/sysync/engineentry.cpp:
-       * src/sysync/engineentry.h:
-       * src/sysync/engineinterface.cpp:
-       * src/sysync/engineinterface.h:
-       * src/sysync/localengineds.cpp:
-       * src/sysync/localengineds.h:
-       * src/sysync/multifielditem.cpp:
-       * src/sysync/multifielditem.h:
-       * src/sysync/syncappbase.cpp:
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncclient.h:
-       * src/sysync/syncclientbase.cpp:
-       * src/sysync/syncsession.h:
-       * src/sysync_SDK/Sources/engine_defs.h:
-       * src/sysync_SDK/Sources/sync_dbapidef.h:
+       * test/test-dbus.py:
 
-       DBAPI_TUNNEL_SUPPORT: Implemented now. This allows directly
-       accessing data items from the main application (e.g. for test)
+       D-Bus testing: don't configure password for local sync
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/Targets/ReleasedProducts/serverEngine_opensource_linux/define.h:
-       * src/Targets/ReleasedProducts/serverEngine_opensource_linux/serverengine_demo++.pch:
-       * src/Targets/ReleasedProducts/serverEngine_opensource_linux/serverengine_demo.pch:
-       * src/Targets/ReleasedProducts/serverEngine_opensource_linux/serverengine_opensource_linux_prefix.h:
-       * src/Targets/ReleasedProducts/serverEngine_opensource_linux/target_options.h:
+       * test/test-dbus.py:
 
-       libsynthesis_srv: added new target files for SyncML server
-       variant of libsynthesis
+       D-Bus testing: failed auto sync session must not restart
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-22  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/binfileimplds.cpp:
-       * src/sysync/binfileimplds.h:
-       * src/sysync/localengineds.cpp:
-       * src/sysync/synccommand.cpp:
-       * src/sysync/sysync_globs.h:
+       * test/test-dbus.py:
 
-       REVERTED for now: Add/Replace statistics workaround
+       D-Bus testing: reports optional in TestLocalSync.testConcurrency
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-21  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/syncml_tk/src/sml/xlt/all/xltdevinf.c:
+       * test/test-dbus.py:
 
-       devInf without datastore list: clarified comments why this is
-       needed (comment change only)
+       D-Bus testing: fixed session startup
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-19  Patrick Ohly  <patrick.ohly@intel.com>
 
+       * src/dbus/server/server.cpp:
 
-       Merge remote branch 'moblin/yongsheng'
+       server.cpp: minor code reformatting
 
-2009-09-08  Lukas Zeller  <luz@synthesis.ch>
+2012-03-19  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncclient.h:
+       * src/dbus/server/server.h:
 
-       STEPCMD_RESENDDATA: modified such that it is clear state is
-       different from after STEPCMD_SENDDATA
+       D-Bus server: removed dead code (m_pollConnman)
 
-2009-09-03  Patrick Ohly  <patrick.ohly@gmx.de>
+2012-03-19  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/debuglogger.cpp:
+       * test/test-dbus.py:
+       * test/test-dbus/auto-sync/config/syncevolution/.internal.ini:
+       * test/test-dbus/auto-sync/config/syncevolution/config.ini:
+       * test/test-dbus/auto-sync/config/syncevolution/default/.internal.ini:
+       * test/test-dbus/auto-sync/config/syncevolution/default/config.ini:
+       * test/test-dbus/auto-sync/config/syncevolution/default/peers/scheduleworld/.internal.ini:
+       * test/test-dbus/auto-sync/config/syncevolution/default/peers/scheduleworld/config.ini:
 
-       TDebugLoggerBase::DebugOpenBlock: fixed build failure on Alpha
-       CPU architecture
+       D-Bus testing: start with auto sync on, auto terminate once it is
+       off
 
-2009-09-03  Zhu, Yongsheng  <yongsheng.zhu@intel.com>
+2012-03-19  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/syncml_tk/src/sml/xlt/all/xltdevinf.c:
+       * src/dbus/server/auto-sync-manager.cpp:
+       * src/dbus/server/auto-sync-manager.h:
+       * src/dbus/server/server.cpp:
+       * src/dbus/server/server.h:
+       * src/dbus/server/session.cpp:
+       * src/dbus/server/session.h:
+       * test/test-dbus.py:
 
-       DevInf: Allow devinf not containing datastore when encoding
+       D-Bus server: cleaned up shutdown handling
 
-2009-09-03  Zhu, Yongsheng  <yongsheng.zhu@intel.com>
+2012-03-15  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncclient.cpp:
+       * test/test-dbus.py:
 
-       Message: do 'FinishMessage' processing at the end of session
+       D-Bus testing: enable running under gdb via env variable
 
-2009-08-25  Patrick Ohly  <patrick.ohly@gmx.de>
+2012-03-08  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/Makefile.am.in:
+       * src/dbus/server/dbus-callbacks.cpp:
+       * src/dbus/server/dbus-callbacks.h:
 
-       bumped version to current/revision/age 2/0/2 because of
-       STEP_RESENDDATA
+       D-Bus server: asynchronous method infrastructure
 
-2009-07-22  Chen Congwu  <congwu.chen@intel.com>
+2012-03-16  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncclient.cpp:
-       * src/sysync_SDK/Sources/engine_defs.h:
+       * src/syncevo/ForkExec.cpp:
+       * src/syncevo/ForkExec.h:
+       * test/dbus-client-server.cpp:
 
-       Client+Resend data: bug#3427, add sysync::STEP_RESENDDATA
+       ForkExec: fix race condition
 
-2009-08-18  Patrick Ohly  <patrick.ohly@gmx.de>
+2012-03-15  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/stdlogicds.cpp:
+       * src/gdbus/gdbus-cxx-bridge.cpp:
+       * src/gdbus/gdbus-cxx-bridge.h:
+       * src/gdbusxx/gdbus-cxx-bridge.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       Revert "slow sync: avoid empty anchors, that confuses
-       ScheduleWorld"
+       dbus-wrappers: Add delayed message processing for DBus
+       connections.
 
-2009-08-18  Patrick Ohly  <patrick.ohly@gmx.de>
+2012-03-14  Patrick Ohly  <patrick.ohly@intel.com>
 
+       * test/test-dbus.py:
 
-       Merge commit 'synthesis/master'
+       D-Bus testing: server should not allow new sessions while
+       shutting down
 
-2009-08-13  Patrick Ohly  <patrick.ohly@gmx.de>
+2012-03-14  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/itemfield.cpp:
+       * src/dbus/server/timeout.h:
 
-       reading keys: fixed string handling errors
+       D-Bus server Timeout class: API improvements
 
-2009-08-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-12  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/vtimezone.cpp:
-       * src/sysync/vtimezone.h:
+       * src/dbus/server/session.cpp:
 
-       vtimezone: accept alternative line ends, using const string & for
-       efficiency
+       syncevo-dbus-server: fix Session.CheckSession() name
 
-2009-08-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/sysync_utils.cpp:
+       * Makefile.am:
+       * src/dbus/interfaces/syncevo-server-full.xml:
+       * src/dbus/interfaces/syncevo-session-full.xml:
+       * src/syncevo/SuspendFlags.h:
+       * test/test-dbus.py:
 
-       compiler warning in generateNonce(): casting char array
+       trivial: Fixed up various comments and formatting mistakes
 
-2009-08-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/synccommand.cpp:
+       * test/dbus-client-server.cpp:
 
-       TSyncCommand::analyze: compiler warning about uninitialized
-       variable (return code!)
+       test: Fix cli arguments in test/dbus-client-server.cpp
 
-2009-08-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/engineinterface.cpp:
+       * configure.ac:
 
-       TSettingsKeyImpl::SetValueByID: compiler warning about pointer
-       aliasing
+       dbus-server: Bump GIO version to 2.30 due to bugs in earlier
+       versions
 
-2009-08-12  Lukas Zeller  <luz@synthesis.ch>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
+       * src/syncevo/LogSyslog.cpp:
+       * src/syncevo/LogSyslog.h:
+       * src/syncevo/syncevo.am:
 
-       Merge commit 'origin/master'
+       Added LoggerBase subclass to use syslog as logging mechanism.
 
-2009-08-12  Beat Forster  <bfo@synthesis.ch>
+2012-03-12  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync_SDK/Sources/SDK_util.c:
-       * src/sysync_SDK/Sources/sync_dbapidef.h:
+       * src/syncevo/ForkExec.cpp:
 
-       SDK version changed to 1.6.0
+       ForkExec.cpp: fix for "Fix the build without
+       --enable-dbus-service."
 
-2009-08-12  Beat Forster  <bfo@synthesis.ch>
+2012-03-08  Murray Cumming  <murrayc@murrayc.com>
 
-       * src/sysync_SDK/DB_Interfaces/text_db/sync_dbapi_text.cpp:
-       * src/sysync_SDK/Sources/dbitem.cpp:
-       * src/sysync_SDK/Sources/dbitem.h:
+       * src/syncevo/ForkExec.cpp:
 
-       TextDB: minor fixes
+       ForkExec.cpp: Fix the build without --enable-dbus-service.
 
-2009-08-12  Lukas Zeller  <luz@synthesis.ch>
+2012-03-14  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/global_options.h:
-       * src/sysync/binfileimplclient.cpp:
+       * src/syncevo/ForkExec.cpp:
+       * src/syncevo/ForkExec.h:
 
-       engine 3.2.0.33: enhanced URIpath profile settings functionality
+       ForkExec: Do not use arbitrary value when empty one was passed.
 
-2009-08-12  Lukas Zeller  <luz@synthesis.ch>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/mimedirprofile.cpp:
+       * src/syncevo/ForkExec.cpp:
+       * src/syncevo/ForkExec.h:
 
-       mimedirprofile: autoenddate 23:59:59 detection bug fixed
+       syncevo: Added method to add environment variables to ForkExec
 
-2009-08-11  Zhu, Yongsheng  <yongsheng.zhu@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/rrules.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       RRULE: rrule2internal will lose the last item of daylist of
-       fields like 'BY***'
+       gio-gdbus-wrapper: Trivial fixes.
 
-2009-08-05  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/engineinterface.cpp:
+       * src/gdbus/gdbus-cxx-bridge.cpp:
+       * src/gdbus/gdbus-cxx-bridge.h:
 
-       TSettingsKeyImpl::SetValueByID: compiler warning about pointer
-       aliasing
+       libdbus-wrapper: Trivial fixes.
 
-2009-08-05  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/synccommand.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       TSyncCommand::analyze: compiler warning about uninitialized
-       variable (return code!)
+       gio-gdbus-wrapper: Remove unused function.
 
-2009-08-05  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/sysync_utils.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       appendRFC2047AsUTF8: compiler warning about uninitialized
-       variable
+       gio-gdbus-wrapper: Use literal version of error reply creation
+       functions.
 
-2009-08-05  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/sysync_utils.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.cpp:
 
-       compiler warning in generateNonce(): casting char array
+       gio-gdbus-wrapper: Document how connection should be handled in
+       GDBusServer.
 
-2009-07-30  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/stdlogicds.cpp:
+       * src/gdbus/object.c:
 
-       slow sync: avoid empty anchors, that confuses ScheduleWorld
+       Call proper version of error message creation function.
 
-2009-07-29  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/vtimezone.cpp:
+       * src/gdbus/gdbus-cxx-bridge.h:
 
-       timezone parsing: accept \r\n and \r as line ends in addition to
-       \n
+       libdbus-wrapper: Check for NULL DBusPendingCall.
 
-2009-07-28  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/sysync/vtimezone.cpp:
-       * src/sysync/vtimezone.h:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       vtimezone: use const string & instead of string copy
+       gio-gdbus-wrapper: Made DBusObject's destructor virtual.
 
-2009-07-21  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Chris Kühl  <chrisk@openismus.com>
 
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * src/gdbus/gdbus-cxx-bridge.h:
 
-       Linux timezones: previous fix for icalcomponent_as_ical_string_r
-       was incomplete
+       libdbus-wrapper: Made DBusObject's destructor virtual.
 
-2009-07-21  Patrick Ohly  <patrick.ohly@intel.com>
+2012-03-08  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * src/gdbus/gdbus-cxx-bridge.h:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       Linux timezones: compile fix for libecal and
-       --disable-evolution-compatibility
+       GDBus GIO+libdbus: GDBusMessagePtr -> DBusMessagePtr
 
-2009-07-21  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * configure.ac:
+       * src/backends/evolution/EvolutionCalendarSource.h:
+       * src/backends/webdav/CalDAVSource.h:
+       * src/syncevo/SyncContext.cpp:
+       * src/syncevo/SyncSource.cpp:
+       * src/syncevo/SyncSource.h:
+       * src/syncevo/configs/scripting/11calendar.xml:
 
-       Linux timezones: use icalcomponent_as_ical_string_r() if possible
+       local + remote sync: negotiate UID support via SyncCap (BMC
+       #22783)
 
-2009-07-17  Patrick Ohly  <patrick.ohly@intel.com>
+2012-05-02  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * Makefile.am:
-       * configure.in:
-       * synthesis.pc.in:
+       * test/test-dbus.py:
 
-       autotools: added synthesis.pc file for pkg-config
+       D-Bus testing: added second sync output test
 
-2009-07-17  Patrick Ohly  <patrick.ohly@intel.com>
+2012-05-02  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * test/sys.supp:
 
-       Linux timezones: avoid compiler warning
+       testing: ignore another g_cclosure_new possible leak
 
-2009-07-16  Chen Congwu  <congwu.chen@intel.com>
+2012-05-02  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/binfileimplds.cpp:
-       * src/sysync/binfileimplds.h:
-       * src/sysync/localengineds.cpp:
-       * src/sysync/synccommand.cpp:
-       * src/sysync/sysync_globs.h:
+       * src/syncevo/SyncConfig.cpp:
 
-       client + statistics workaround: treat status 200 as 201 for
-       Replace cmd (which is really an Add)
+       source list: sort alphabetically
 
-2009-07-15  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * configure.in:
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * test/test-dbus.py:
 
-       autotools: add --enable-evolution-compatibility
+       D-Bus testing: extended sync output tests
 
-2009-07-15  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * README:
+       * test/test-dbus.py:
 
-       README: mentioned that expat 2.x can be used instead of the older
-       expat 1.x
+       D-Bus testing: improved status/progress monitoring
 
-2009-07-14  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
+       * src/dbus/server/session.cpp:
 
-       Merge commit 'origin/master'
+       command line + D-Bus server: fixed D-Bus events
 
-2009-07-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * autogen.sh:
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/Cmdline.h:
 
-       autgen.sh: wipe out old files before recreating them
+       Cmdline: added isRestore()
 
-2009-07-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/synthesis-linker.map:
+       * src/dbus/server/cmdline-wrapper.h:
 
-       SySyncDebugPuts: fixed dynamic link problem
+       D-Bus server: refactor CmdlineWrapper
 
-2009-07-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncserver.cpp:
-       * src/sysync/syncserver.h:
+       * test/test-dbus.py:
 
-       server: fixed to compile again with ENGINEINTERFACE_SUPPORT (for
-       XXXAsKey) but no ENGINE_LIBRARY (traditional Synthesis builds)
+       D-Bus testing: added test for sync output
 
-2009-07-10  Beat Forster  <bfo@synthesis.ch>
+2012-04-30  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/syncml_tk/src/sml/xlt/all/xltdecxml.c:
+       * src/syncevo/LocalTransportAgent.cpp:
 
-       syncml_tk: Fix for BOM checker: In pure C variables must be
-       defined before any other statement
+       command line + local sync: fixed erroneous "Comparison
+       impossible" output.
 
-2009-07-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncsession.cpp:
-       * src/sysync/syncsession.h:
+       * test/test-dbus.py:
 
-       Suspend ALERT: renamed flags and accessors to include "suspend"
-       (to make clear it is the suspend alert)
+       D-Bus testing: relaxed error message text check
 
-2009-07-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
+       * src/gdbus/watch.c:
 
-       Merge commit 'moblin/congwu'
+       GDBus libdbus: fixed use-after-free error
 
-2009-07-10  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync_SDK/Sources/enginemodulebase.cpp:
-       * src/sysync_SDK/Sources/enginemodulebase.h:
+       * src/syncevo/Cmdline.cpp:
 
-       TEngineModuleBridge::Term() + fCI: memory leak
+       command line: fixed --luids when using daemon
 
-2009-07-10  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/scriptcontext.cpp:
+       * test/test-dbus.py:
 
-       MakeTextWithProfile: did not free profile handler
+       D-Bus testing: fixed migration tests
 
-2009-07-10  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/mimedirprofile.cpp:
+       * test/test-dbus.py:
 
-       MIMEStringToField: unitialized time context
+       D-Bus testing: comment change CalDAV/CardDAV
 
-2009-07-10  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/engineinterface.cpp:
+       * test/test-dbus.py:
 
-       TSettingsKeyImpl::checkFieldAttrs: don't read before start of
-       string
+       D-Bus testing: fixed createFiles + testItemOperations
 
-2009-07-03  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/engineentry.cpp:
-       * src/sysync/syncclientbase.cpp:
-       * src/sysync/syncclientbase.h:
-       * src/sysync_SDK/Sources/enginemodulebase.h:
-       * src/sysync_SDK/Sources/sync_dbapidef.h:
+       * test/test-dbus.py:
 
-       engine logging: new API with more information provided to the
-       engine
+       D-Bus testing: use Python >= 2.7 assertions
 
-2009-07-03  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/debuglogger.h:
+       * test/test-dbus.py:
 
-       engine logging: fix message dumping in combination with
-       <logsessionstoglobal>
+       D-Bus testing: fixed cut-and-paste errors
 
-2009-07-03  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-27  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/scriptcontext.cpp:
+       * test/test-dbus.py:
 
-       fixed compiler warnings: signed/unsigned comparison
+       D-Bus Testing: fixed setup of ~/.sync4j (testMigrate*)
 
-2009-07-03  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-24  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/syncsession.cpp:
+       * src/src.am:
 
-       configuration: accept configs without any datastore definition
+       build: fixed creation of symlink to src/templates
 
-2009-06-26  Chen Congwu  <congwu.chen@intel.com>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncsession.cpp:
-       * src/sysync/syncsession.h:
+       * test/test-dbus.py:
 
-       Suspend ALERT: make sure synthesis client sends the suspend alert
+       D-Bus Testing: added testItemOperations
 
-2009-07-01  Lukas Zeller  <luz@synthesis.ch>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/sysync/mimedirprofile.cpp:
-       * src/sysync/mimedirprofile.h:
+       * test/test-dbus.py:
 
-       remoterules build dependency removed - new setRemoteRule()
-       function implementation needed #ifdefs
+       D-Bus Testing: added testMigrateAutoSync
 
-2009-07-01  Lukas Zeller  <luz@synthesis.ch>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/sysync/debuglogger.cpp:
-       * src/sysync/debuglogger.h:
-       * src/sysync/syncappbase.cpp:
-       * src/sysync/syncappbase.h:
-       * src/sysync/syncsession.cpp:
+       * test/test-dbus.py:
 
-       engine logging: added <logsessionstoglobal> to direct session
-       logs into global log
+       D-Bus Testing: added testMigrateContext
 
-2009-07-01  Lukas Zeller  <luz@synthesis.ch>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/sysync/scriptcontext.cpp:
-       * src/sysync/scriptcontext.h:
+       * test/test-dbus.py:
 
-       scripts: Added macro arguments for script macros
+       D-Bus Testing: added testMigrate
 
-2009-06-26  tester  <tester@knlcst4.ikn.intel.com>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/DB_interfaces/odbc_db/odbcapiagent.cpp:
+       * test/test-dbus.py:
 
-       compiler warning: uninitialized variable
+       D-Bus Testing: added testPrintDatabases
 
-2009-06-26  tester  <tester@knlcst4.ikn.intel.com>
+2012-04-20  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/sysync/syncsession.cpp:
+       * test/test-dbus.py:
 
-       compiler warning: parenthesis in boolean expression
+       D-Bus Testing: added testConfigureSource
 
-2009-06-26  zhu, yongsheng  <yongsheng.zhu@intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/mimedirprofile.cpp:
+       * test/test-dbus.py:
 
-       MIMEPROFILE: Add \N to represent newline
+       D-Bus Testing: fail the test on unexpected success of
+       syncevolution
 
-2009-06-25  tester  <tester@knlcst4.ikn.intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * configure.in:
+       * test/test-dbus.py:
 
-       configure + XML lib: fixed the situation where only expat was
-       installed
+       D-Bus Testing: added testConfigureTemplates
 
-2009-06-25  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
+       * test/test-dbus.py:
 
-       Merge commit 'moblin/yong'
+       D-Bus Testing: use version getters in ScheduleWorldConfig()
 
-2009-06-25  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-25  Krzesimir Nowak  <krnowak@openismus.com>
 
+       * test/test-dbus.py:
 
-       Merge commit 'origin/master'
+       D-Bus Testing: added tests for version getters
 
-2009-06-23  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/Makefile.am.in:
-       * src/sysync/mimedirprofile.cpp:
-       * src/sysync/mimedirprofile.h:
-       * src/sysync/multifielditem.h:
-       * src/sysync/scriptcontext.cpp:
+       * test/test-dbus.py:
 
-       MAKE/PARSETEXTWITHPROFILE: added remote rule name parameter
+       D-Bus Testing: added version getters from SyncConfig.h
 
-2009-06-23  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/Targets/ReleasedProducts/clientEngine_opensource_linux/target_options.h:
+       * test/test-dbus.py:
 
-       compile configuration: enable remote rules in client engine
+       D-Bus Testing: remove unused removeSSLCertsPaths method
 
-2009-06-22  Lukas Zeller  <luz@synthesis.ch>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/stdlogicds.cpp:
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncsession.cpp:
-       * src/sysync/syncsession.h:
+       * test/test-dbus.py:
 
-       engine: cleaned up around fRemoteMustSeeDevinf and
-       mustSendDevInf()
+       D-Bus Testing: added testConfigure
 
-2009-06-22  Wu, Yong  <yong.wu@intel.com>
+2012-04-19  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/syncclient.cpp:
+       * test/test-dbus.py:
 
-       client: Added check to make sure devInf gets sent (Put) to server
-       when config has changed
+       D-Bus Testing: added testWebDAV
 
-2009-06-22  Wu, Yong  <yong.wu@intel.com>
+2012-04-18  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/syncappbase.h:
+       * test/test-dbus.py:
 
-       Avoid "if without value" compiling warnings.
+       D-Bus Testing: added testSync
 
-2009-06-19  Wu, Yong  <yong.wu@intel.com>
+2012-04-18  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * configure.in:
+       * test/test-dbus.py:
 
-       Fix a typo in help text.
+       D-Bus Testing: added testAddSource
 
-2009-06-19  Wu, Yong  <yong.wu@intel.com>
+2012-04-18  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * configure.in:
-       * src/sysync/syncappbase.h:
+       * test/test-dbus.py:
 
-       Bug 3312. add expat support. Synthesis can work in 3 modes: a)
-       system expat, b) system xmltok, c) builtin xmltok. The original
-       configuration works with either system xmltok or builtin xmltok.
-       We added the expat support and made expat as the default xml
-       parser.
+       D-Bus Testing: added testPrintFileTemplatesConfig
 
-2009-06-18  Lukas Zeller  <luz@synthesis.ch>
+2012-04-18  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/DB_interfaces/api_db/pluginapids.cpp:
-       * src/DB_interfaces/api_db/pluginapids.h:
-       * src/DB_interfaces/odbc_db/odbcapids.h:
-       * src/global_options.h:
-       * src/sysync/binfileimplclient.cpp:
-       * src/sysync/binfileimplds.cpp:
-       * src/sysync/binfileimplds.h:
-       * src/sysync/customimplds.cpp:
-       * src/sysync/customimplds.h:
-       * src/sysync/engineinterface.cpp:
-       * src/sysync/sysync_utils.cpp:
+       * test/test-dbus.py:
 
-       engine 3.2.0.32: cleaned up binfile changelog update tracking
+       D-Bus Testing: added testPrintFileTemplates
 
-2009-06-16  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * Synthesis_AG_Contributor_Agreement.doc:
+       * test/test-dbus.py:
 
-       Contributor agreement: Added Word version for helping incremental
-       workflows completing the agreement
+       D-Bus Testing: reorder records in ScheduleWorldConfig a bit
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * doc/SySync_config_reference.doc:
-       * doc/SySync_config_reference.pdf:
+       * test/test-dbus.py:
 
-       docs: updated SySync_config_reference for engine 3.2.0.31
+       D-Bus Testing: added testPrintConfig
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-24  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/global_options.h:
+       * test/test-dbus.py:
 
-       engine 3.2.0.31
+       D-Bus Testing: replaced uses of general assertions with specific
+       ones.
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-24  Krzesimir Nowak  <qdlacz@gmail.com>
 
-       * src/DB_interfaces/api_db/pluginapids.cpp:
-       * src/sysync/localengineds.cpp:
-       * src/sysync/syncappbase.h:
-       * src/sysync/syncclientbase.cpp:
-       * src/sysync/syncclientbase.h:
-       * src/sysync/syncserver.cpp:
-       * src/sysync/syncserver.h:
+       * test/test-dbus.py:
 
-       server engine: some preparations, work in progress
+       D-Bus Testing: implement assertIn and assertNotIn for older
+       Python
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/syncclient.cpp:
-       * src/sysync/syncclient.h:
-       * src/sysync/sysync_globs.h:
+       * test/test-dbus.py:
 
-       client: added "smart" retry (mainly as ZYB workaround)
+       D-Bus Testing: added testPrintServers
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/scriptcontext.cpp:
-       * src/sysync/syncsession.cpp:
+       * test/test-dbus.py:
 
-       Scripting: Made SETLOG, SETDEBUGLOG and SETREADONLY generally
-       accessible
+       D-Bus Testing: fixed scanFiles
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/binfileimplclient.cpp:
-       * src/sysync/binfileimplclient.h:
-       * src/sysync/binfileimplds.cpp:
-       * src/sysync/engineinterface.cpp:
-       * src/sysync/itemfield.cpp:
-       * src/sysync_SDK/Sources/engine_defs.h:
+       * test/test-dbus.py:
+       * test/test-dbus/templates/templates/clients/SyncEvolution.ini:
+       * test/test-dbus/templates/templates/clients/phone/nokia/S40/7210c.ini:
 
-       engine: settings key access improvements
+       D-Bus Testing: added testMatchTemplate
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-18  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/DB_interfaces/odbc_db/odbcapiagent.cpp:
-       * src/sysync/customimplagent.cpp:
-       * src/sysync/customimplagent.h:
-       * src/sysync/lineartime.h:
+       * test/test-dbus.py:
 
-       DB interfacing: support for Apple "nsdate" DB field type
+       D-Bus Testing: also copy templates directory in setupFiles
 
-2009-06-10  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/customimplds.cpp:
-       * src/sysync/dataobjtype.cpp:
-       * src/sysync/multifielditem.h:
-       * src/sysync/timezones.h:
+       * test/test-dbus.py:
 
-       warnings elimination
+       D-Bus Testing: run syncevolution with the same environment as
+       syncevo-dbus-server
 
-2009-06-09  zhu, yongsheng  <yongsheng.zhu@intel.com>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/syncml_tk/src/sml/xlt/all/xltdecxml.c:
+       * test/test-dbus.py:
 
-         BOM Processing for SyncML Toolkit
+       D-Bus Testing: added testTemplate
 
-2009-05-13  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/platform_adapters/linux/platform_timezones.cpp:
+       * test/test-dbus.py:
 
-       libical time zone import: imported time zones were skipped during
-       matching
+       D-Bus Testing: added testSetupSynthesis
 
-2009-05-12  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/global_options.h:
-       * src/sysync/mimedirprofile.cpp:
-       * src/sysync/mimedirprofile.h:
+       * test/test-dbus.py:
 
-       mime-dir: added "expandedlist" option for <property values="..">
+       D-Bus Testing: added testSetupFunambol
 
-2009-05-12  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/iso8601.cpp:
+       * test/test-dbus.py:
 
-       iso8601: less than 1h negative minute offset was displayed as
-       positive
+       D-Bus Testing: added testSetupRenamed
 
-2009-05-12  Lukas Zeller  <luz@synthesis.ch>
+2012-04-17  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/engineinterface.cpp:
-       * src/sysync/engineinterface.h:
+       * test/test-dbus.py:
 
-       engine interface: added support for querying value type in all
-       settings keys
+       D-Bus Testing: added testSetupDefault
 
-2009-05-12  Beat Forster  <bfo@synthesis.ch>
+2012-04-25  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/timezones.cpp:
-       * src/sysync/tz_table.h:
-       * src/sysync/vtimezone.cpp:
-       * src/sysync/vtimezone.h:
+       * test/test-dbus.py:
 
-       timezones: improved matching for UTC, bug fix
+       D-Bus Testing: used assertEqualDiff for checking stdout and
+       stderr
 
-2009-05-12  Lukas Zeller  <luz@synthesis.ch>
+2012-04-25  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync_SDK/configs/syncclient_sample_config.xml:
+       * test/test-dbus.py:
 
-       sample client config: EXDATE is comma separated in iCalendar 2.0!
+       D-Bus Testing: used assertSilent in testSetupScheduleWorld
 
-2009-05-07  Lukas Zeller  <luz@synthesis.ch>
+2012-04-25  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * Synthesis_AG_Contributor_Agreement.pdf:
+       * test/test-dbus.py:
 
-       Contributor Agreement: clarified "Contributor" term, more space
-       for filling out the form
+       D-Bus Testing: added assertSilent
 
-2009-05-05  Beat Forster  <bfo@synthesis.ch>
+2012-04-24  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/vtimezone.cpp:
+       * test/test-dbus.py:
 
-       timezones: zones without DST rules (e.g. China) will be
-       recognized correctly
+       D-Bus Testing: added some comments to framework functions
 
-2009-05-05  Beat Forster  <bfo@synthesis.ch>
+2012-04-24  Krzesimir Nowak  <krnowak@openismus.com>
 
-       * src/sysync/vtimezone.cpp:
+       * test/test-dbus.py:
 
-       timezones: pure minute offset TZ will now get TZID with name,
-       e.g. TZID:OFFS-0057 or TZID:OFFS+0130
+       D-Bus Testing: remove useless semicolons
 
-2009-05-05  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncserver.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       sysytool: made sure pseudo test session is in "remote understands
-       UTC" mode.
+       GDBus GIO: fix GDBusInterfaceInfo in error case
 
-2009-05-05  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/mimedirprofile.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       vCalendar 1.0 TZ parsing: now searches in internal zone list
+       GDBus GIO: one GDBusMethodInvocation was leaked per method call
 
-2009-05-04  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/global_options.h:
+       * src/gdbusxx/gdbus-cxx-bridge.cpp:
+       * src/gdbusxx/gdbus-cxx-bridge.h:
 
-       Version changed to 3.2.0.27
+       GDBus GIO: fixed GDBusServer leak + stopping server
 
-2009-05-04  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/syncml_tk/src/sml/xlt/all/xltenc.c:
+       * src/backends/activesync/ActiveSyncCalendarSource.cpp:
+       * src/backends/activesync/ActiveSyncSource.cpp:
 
-       SyncML-TK: fixed strange bracketing found by Gary Tyler
+       ActiveSync: fixed restarting sync
 
-2009-05-04  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/syncclientbase.cpp:
-       * src/sysync_SDK/Sources/engine_defs.h:
+       * test/evo.supp:
 
-       Suspend: Fixed problem with STEPCMD_SUSPEND
+       testing: ignore GIO D-Bus leak
 
-2009-05-04  Beat Forster  <bfo@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync_SDK/Sources/SDK_support.cpp:
-       * src/sysync_SDK/Sources/SDK_support.h:
+       * test/evo.supp:
 
-       SDK_support: Added CLine:GetName()
+       testing: ignore GFileMonitorEvent leak
 
-2009-04-22  Lukas Zeller  <luz@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/global_options.h:
+       * test/evo.supp:
+       * test/sys.supp:
 
-       Version changed to 3.2.0.26
+       testing: ignore minor system leaks
 
-2009-04-21  Patrick Ohly  <patrick.ohly@intel.com>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
 
-       * src/sysync/vtimezone.cpp:
+       * test/runtests.py:
 
-       time zones: VTIMEZONE definitions may end in \r\n, strip \r from
-       name
+       testing: fixed edsfile + davfile config
 
-2009-04-17  Synthesis AG  <opensource@synthesis.ch>
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/generate-html.xsl:
+       * test/resultchecker.py:
 
+       testing: fixed HTML results for suspend/resume tests (part of BMC
+       #1367)
 
-       Initial Commit by Synthesis AG for Open Source libsynthesis
-       3.2.0.25 and libsmltk
+2012-04-26  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/ClientTest.cpp:
+       * test/client-test-main.cpp:
+       * test/runtests.py:
+
+       testing: minimize shell calls from client-test
 
-:
+2012-04-24  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/gtk-ui/sync-config-widget.c:
+       * src/gtk-ui/sync-ui.c:
+       * src/gtk3-ui/sync-config-widget.c:
+       * src/gtk3-ui/sync-ui.c:
+
+       GTK-2/3 UI: avoid g_strcasecmp
+
+2012-04-24  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/pbap/PbapSyncSource.cpp:
+
+       PBAP: fixed vcard parser
+
+2012-04-24  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/pbap/PbapSyncSource.cpp:
+
+       PBAP: fixed D-Bus calls
+
+2012-04-23  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/activesync/ActiveSyncSourceRegister.cpp:
+       * src/backends/webdav/WebDAVSourceRegister.cpp:
+       * src/client-test-app.cpp:
+       * src/syncevo/SyncSource.h:
+       * test/ClientTest.h:
+       * test/runtests.py:
+
+       testing: enhanced DAV source testing + infrastructure
+
+2012-04-19  Patrick Ohly  <patrick.ohly@intel.com>
+
+
+       Merge branch 'master' into pbap
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: work around Python 2.6 subprocess bug
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: added testSetupScheduleWorld
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: added running of command line tool
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: eliminate TestCmdline.testdir
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: fixed scanFiles()
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: ensure that we have assertRegexpMatches()
+
+2012-04-16  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: added assertEqualDiff()
+
+2012-04-12  Krzesimir Nowak  <krnowak@openismus.com>
+
+       * test/test-dbus.py:
+
+       D-Bus Testing: add Cmdline tests framework
+
+2012-04-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/dbus/interfaces/syncevo-session-full.xml:
+
+       D-Bus API docs: clarified Session.Execute()
+
+2012-04-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/dbus/server/cmdline-wrapper.h:
+       * src/dbus/server/session.cpp:
+
+       command line + D-Bus server: cleaned up error reporting
+
+2012-04-11  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/Cmdline.cpp:
+
+       command line: eliminate use of printf()
+
+2012-04-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/SyncContext.cpp:
+
+       logging: avoid empty format string
+
+2012-04-11  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/Cmdline.h:
+       * src/syncevo/LogRedirect.cpp:
+       * src/syncevo/LogRedirect.h:
+       * src/syncevo/LogStdout.cpp:
+
+       command line: use both stdout and stderr
+
+2012-04-11  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/Cmdline.cpp:
+
+       command line: fixed error handling for invalid property
+       assignments
+
+2012-04-11  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/dbus/server/cmdline-wrapper.h:
+       * src/syncevo/Cmdline.cpp:
+       * src/syncevo/Cmdline.h:
+       * src/syncevo/LogStdout.cpp:
+       * src/syncevo/SyncConfig.cpp:
+       * src/syncevo/SyncContext.cpp:
+       * src/syncevo/SyncContext.h:
+       * src/syncevolution.cpp:
+
+       command line: cleaned up output
+
+2012-03-30  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/gtk-ui/sync-config-widget.c:
+
+       Revert "Do not accept service config without a username
+       (BMC#23106)"
+
+2012-03-30  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * po/POTFILES.in:
+       * src/gtk-ui/gtk-ui.am:
+       * src/gtk3-ui/gtk-ui.am:
+       * src/src.am:
+
+       autotools: fixed UI translation
+
+2012-03-30  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure.ac:
+
+       autotools: pick GTK3 by default only if available
+
+2012-03-30  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/gtk3-ui/sync-ui.c:
+
+       GTK3 UI: fixed compiler warnings
+
+2012-03-27  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * configure.ac:
+
+       autotools: use GTK-3 also for libnotify in D-Bus server
+
+2012-03-20  Jussi Kukkonen  <jussi.kukkonen@intel.com>
+
+       * src/gtk3-ui/sync-ui.c:
+       * src/gtk3-ui/sync-ui.css:
+       * src/gtk3-ui/ui.xml:
+
+       gtk3-ui: Make sure we don't overflow horizontally
+
+2012-01-10  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/gtk-ui/mux-frame.c:
+
+       GTK2 ui: fix compiler warnings
+
+2011-11-22  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk3-ui/gtk-ui.am:
+       * src/gtk3-ui/sync-ui.c:
+       * src/gtk3-ui/sync-ui.css:
+       * src/gtk3-ui/sync-ui.rc:
+       * src/gtk3-ui/ui.xml:
+
+       gtk3-ui: Use CSS styling
+
+2011-11-22  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk3-ui/ui.xml:
+
+       gtk3-ui: be explicit about expands/fills
+
+2011-11-22  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk3-ui/ui.xml:
+
+       gtk3-ui: ui.xml saved with new glade (no functional changes)
+
+2011-11-18  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * configure.ac:
+       * src/gtk3-ui/mux-frame.c:
+       * src/gtk3-ui/sync-config-widget.c:
+       * src/gtk3-ui/sync-ui.c:
+
+       gtk3 changes
+
+2011-11-17  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * configure.ac:
+       * src/gtk-ui/README:
+       * src/gtk3-ui/README:
+       * src/gtk3-ui/gtk-ui.am:
+       * src/gtk3-ui/main.c:
+       * src/gtk3-ui/mux-frame.c:
+       * src/gtk3-ui/mux-frame.h:
+       * src/gtk3-ui/sync-config-widget.c:
+       * src/gtk3-ui/sync-config-widget.h:
+       * src/gtk3-ui/sync-generic.png:
+       * src/gtk3-ui/sync-gtk.desktop.in:
+       * src/gtk3-ui/sync-spinner.gif:
+       * src/gtk3-ui/sync-ui-config.c:
+       * src/gtk3-ui/sync-ui-config.h:
+       * src/gtk3-ui/sync-ui.c:
+       * src/gtk3-ui/sync-ui.h:
+       * src/gtk3-ui/sync-ui.rc:
+       * src/gtk3-ui/sync.desktop.in:
+       * src/gtk3-ui/sync.png:
+       * src/gtk3-ui/ui.xml:
+       * src/src.am:
+
+       gtk-ui: fork gtk3-version of the ui
+
+2011-08-26  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk-ui/mux-frame.c:
+
+       gtk-ui: refactor MuxFrame to remove duplicate code
+
+2011-08-26  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * src/gtk-ui/mux-frame.c:
+       * src/gtk-ui/sync-config-widget.c:
+       * src/gtk-ui/sync-ui.c:
+       * src/gtk-ui/ui.xml:
+
+       gtk-ui: remove uses of GTK features deprecated in 3.0
+
+2011-08-25  Jussi Kukkonen  <jku@linux.intel.com>
+
+       * configure.ac:
+       * src/gtk-ui/gtk-ui.am:
+       * src/gtk-ui/ui.glade:
+       * src/gtk-ui/ui.xml:
+
+       gtk-ui: Use gtkbuilder xml file as canonical source for UI
+
+2012-03-13  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/syncevo/ForkExec.h:
+
+       ForkExec: added comment about D-Bus debugging
+
+2012-03-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/webdav/WebDAVSource.cpp:
+
+       WebDAV: support SyncML<->WebDAV bridge
+
+2012-03-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/webdav/NeonCXX.h:
+
+       NeonCXX: fixed report parser + boost function null call
+
+2012-03-12  Patrick Ohly  <patrick.ohly@intel.com>
+
+       * src/backends/webdav/CalDAVSource.cpp:
+       * src/backends/webdav/CalDAVSource.h:
 
        CalDAV: fixed Google 404 workaround
 
index 3a43f1a..af03a42 100755 (executable)
@@ -2985,7 +2985,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=synthesis
- VERSION=3.4.0.16.11
+ VERSION=3.4.0.47.1
 
 
 cat >>confdefs.h <<_ACEOF
index cf6a488..e54d813 100644 (file)
@@ -4,7 +4,7 @@ AC_INIT(src/sysync/engineinterface.cpp)
 AC_CONFIG_MACRO_DIR([m4])
 # four digit upstream version, one additional digit for
 # Linux/SyncEvolution specific extensions:
-AM_INIT_AUTOMAKE(synthesis, 3.4.0.16.11)
+AM_INIT_AUTOMAKE(synthesis, 3.4.0.47.1)
 AM_CONFIG_HEADER(config.h)
 AC_LIBTOOL_DLOPEN
 
index 06bdabd..c15f655 100644 (file)
@@ -3993,9 +3993,18 @@ bool TSyncSession::processSyncOpItem(
   bool regular = fLocalSyncDatastoreP->engProcessSyncOpItem(aSyncOp, aItemP, aMetaP, aStatusCommand);
   TSyError statuscode = aStatusCommand.getStatusCode();
   if (statuscode == LOCERR_AGAIN) {
-    PDEBUGPRINTFX(DBG_DATA,("Queueing  %s-operation for later.", SyncOpNames[aSyncOp]));
-    aQueueForLater=true; // re-execute later...
-    return true; // ...but otherwise ok
+    if (fStrictExecOrdering) {
+      // Cannot reorder commands, so force execution now. If we had a way of
+      // telling the store that it should not use LOCERR_AGAIN, we could
+      // avoid this unnecessary "delay + flush" for each item.
+      PDEBUGPRINTFX(DBG_DATA,("Re-executing %s-operation because <strictexecordering> is on.", SyncOpNames[aSyncOp]));
+      regular = fLocalSyncDatastoreP->engProcessSyncOpItem(aSyncOp, aItemP, aMetaP, aStatusCommand);
+      statuscode = aStatusCommand.getStatusCode();
+    } else {
+      PDEBUGPRINTFX(DBG_DATA,("Queueing  %s-operation for later.", SyncOpNames[aSyncOp]));
+      aQueueForLater=true; // re-execute later...
+      return true; // ...but otherwise ok
+    }
   }
   #ifdef SCRIPT_SUPPORT
   // let script check status code if the operation completed
index 1a3c575..86e2b4d 100644 (file)
@@ -2009,16 +2009,30 @@ void LocalTests::testLinkedItemsRemoveNormal() {
     // Skip the testing, proceed to full removal.
     if (currentServer() != "exchange") {
         SOURCE_ASSERT_NO_FAILURE(source.get(), source.reset(createSourceA()));
-#ifndef USE_EDS_CLIENT
         if (getCurrentTest().find("::eds_event::") != std::string::npos) {
-            // hack: ignore EDS side effect of adding EXDATE to parent, see http://bugs.meego.com/show_bug.cgi?id=10906
-            size_t pos = parentData.rfind("DTSTART");
-            parentData.insert(pos,
-                              getCurrentTest().find("LinkedItemsAllDay") == std::string::npos ?
-                              "EXDATE:20080413T090000\n" :
-                              "EXDATE:20080413\n");
-        }
+            bool usingEDSLT36;
+
+#ifdef  EVOLUTION_COMPATIBILITY
+            // Need to check at runtime.
+            // We are using EDS < 3.6 if (and only if) we found the right libs.
+            usingEDSLT36 = EDSAbiHaveEcal;
+#elif defined(USE_EDS_CLIENT)
+            // Detected at runtime: new EDS API.
+            usingEDSLT36 = false;
+#else
+            // Detected at runtime: old EDS API.
+            usingEDSLT36 = true;
 #endif
+            if (usingEDSLT36) {
+                // hack: ignore EDS < 3.6 side effect of adding EXDATE to parent, see http://bugs.meego.com/show_bug.cgi?id=10906
+                size_t pos = parentData.rfind("DTSTART");
+                parentData.insert(pos,
+                                  getCurrentTest().find("LinkedItemsAllDay") == std::string::npos ?
+                                  "EXDATE:20080413T090000\n" :
+                                  "EXDATE:20080413\n");
+            }
+        }
+
         CT_ASSERT_NO_THROW(compareDatabases(*source, &parentData, NULL));
         SOURCE_ASSERT_EQUAL(source.get(), 1, countItems(source.get()));
         SOURCE_ASSERT_EQUAL(source.get(), 0, countNewItems(source.get()));