Hello community,

here is the log from the commit of package evolution-data-server for 
openSUSE:Factory checked in at 2018-03-08 10:42:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evolution-data-server (Old)
 and      /work/SRC/openSUSE:Factory/.evolution-data-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "evolution-data-server"

Thu Mar  8 10:42:22 2018 rev:186 rq:582660 version:3.26.6

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/evolution-data-server/evolution-data-server.changes  
    2018-02-21 14:08:01.549634349 +0100
+++ 
/work/SRC/openSUSE:Factory/.evolution-data-server.new/evolution-data-server.changes
 2018-03-08 10:42:23.957954946 +0100
@@ -1,0 +2,7 @@
+Mon Mar  5 11:00:42 UTC 2018 - [email protected]
+
+- Update to version 3.26.6:
+  + Google calendar stopped reporting user email.
+  + Bugs fixed: bgo#793466, bgo#793852, bgo#791475, bgo#793779.
+
+-------------------------------------------------------------------

Old:
----
  evolution-data-server-3.26.5.tar.xz

New:
----
  evolution-data-server-3.26.6.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ evolution-data-server.spec ++++++
--- /var/tmp/diff_new_pack.jiAeAB/_old  2018-03-08 10:42:24.593932047 +0100
+++ /var/tmp/diff_new_pack.jiAeAB/_new  2018-03-08 10:42:24.597931903 +0100
@@ -30,10 +30,10 @@
 %define so_edata_cal 28
 %define _evo_version 3.26
 Name:           evolution-data-server
-Version:        3.26.5
+Version:        3.26.6
 Release:        0
 Summary:        Evolution Data Server
-License:        LGPL-2.1+
+License:        LGPL-2.1-or-later
 Group:          Development/Libraries/GNOME
 Url:            http://www.gnome.org
 Source0:        
http://download.gnome.org/sources/evolution-data-server/3.26/%{name}-%{version}.tar.xz

++++++ evolution-data-server-3.26.5.tar.xz -> 
evolution-data-server-3.26.6.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-data-server-3.26.5/CMakeLists.txt 
new/evolution-data-server-3.26.6/CMakeLists.txt
--- old/evolution-data-server-3.26.5/CMakeLists.txt     2018-02-05 
11:57:20.000000000 +0100
+++ new/evolution-data-server-3.26.6/CMakeLists.txt     2018-03-05 
11:10:55.000000000 +0100
@@ -4,7 +4,7 @@
 cmake_policy(VERSION 3.1)
 
 project(evolution-data-server
-       VERSION 3.26.5
+       VERSION 3.26.6
        LANGUAGES C CXX)
 set(PROJECT_BUGREPORT 
"http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server";)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/evolution-data-server-3.26.5/NEWS 
new/evolution-data-server-3.26.6/NEWS
--- old/evolution-data-server-3.26.5/NEWS       2018-02-05 11:57:20.000000000 
+0100
+++ new/evolution-data-server-3.26.6/NEWS       2018-03-05 11:10:55.000000000 
+0100
@@ -1,3 +1,15 @@
+Evolution-Data-Server 3.26.6 2018-03-05
+---------------------------------------
+
+Bug Fixes:
+       Bug 793466 - [evolution-source-registry] Empty .source file causes high 
CPU usage (Milan Crha)
+       Bug 793852 - Remove unused code after changes for bug 793466 (Lubomir 
Rintel)
+       Bug 791475 - Incorrectly parses headers in certain case ][ (Milan Crha)
+       Bug 793779 - Forward slash in UID breaks CardDAV backend (Milan Crha)
+
+Miscellaneous:
+       Google calendar stopped reporting user email (Milan Crha)
+
 Evolution-Data-Server 3.26.5 2018-02-05
 ---------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-data-server-3.26.5/src/addressbook/backends/webdav/e-book-backend-webdav.c
 
new/evolution-data-server-3.26.6/src/addressbook/backends/webdav/e-book-backend-webdav.c
--- 
old/evolution-data-server-3.26.5/src/addressbook/backends/webdav/e-book-backend-webdav.c
    2018-02-05 11:57:20.000000000 +0100
+++ 
new/evolution-data-server-3.26.6/src/addressbook/backends/webdav/e-book-backend-webdav.c
    2018-03-05 11:10:55.000000000 +0100
@@ -787,7 +787,7 @@
 {
        ESourceWebdav *webdav_extension;
        SoupURI *soup_uri;
-       gchar *uri, *tmp, *filename;
+       gchar *uri, *tmp, *filename, *uid_hash = NULL;
 
        g_return_val_if_fail (E_IS_BOOK_BACKEND_WEBDAV (bbdav), NULL);
        g_return_val_if_fail (uid != NULL, NULL);
@@ -796,6 +796,17 @@
        soup_uri = e_source_webdav_dup_soup_uri (webdav_extension);
        g_return_val_if_fail (soup_uri != NULL, NULL);
 
+       /* UIDs with forward slashes can cause trouble, because the destination 
server
+          can consider them as a path delimiter. For example Google book 
backend uses
+          URL as the contact UID. Double-encode the URL doesn't always work, 
thus
+          rather cause a mismatch between stored UID and its href on the 
server. */
+       if (strchr (uid, '/')) {
+               uid_hash = g_compute_checksum_for_string (G_CHECKSUM_SHA1, uid, 
-1);
+
+               if (uid_hash)
+                       uid = uid_hash;
+       }
+
        if (extension) {
                tmp = g_strconcat (uid, extension, NULL);
                filename = soup_uri_encode (tmp, NULL);
@@ -822,6 +833,7 @@
 
        soup_uri_free (soup_uri);
        g_free (filename);
+       g_free (uid_hash);
 
        return uri;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-data-server-3.26.5/src/calendar/backends/caldav/e-cal-backend-caldav.c
 
new/evolution-data-server-3.26.6/src/calendar/backends/caldav/e-cal-backend-caldav.c
--- 
old/evolution-data-server-3.26.5/src/calendar/backends/caldav/e-cal-backend-caldav.c
        2018-02-05 11:57:20.000000000 +0100
+++ 
new/evolution-data-server-3.26.6/src/calendar/backends/caldav/e-cal-backend-caldav.c
        2018-03-05 11:10:55.000000000 +0100
@@ -58,6 +58,33 @@
 
 G_DEFINE_TYPE (ECalBackendCalDAV, e_cal_backend_caldav, 
E_TYPE_CAL_META_BACKEND)
 
+static void
+ecb_caldav_update_tweaks (ECalBackendCalDAV *cbdav)
+{
+       ESource *source;
+       SoupURI *soup_uri;
+
+       g_return_if_fail (E_IS_CAL_BACKEND_CALDAV (cbdav));
+
+       source = e_backend_get_source (E_BACKEND (cbdav));
+
+       if (!e_source_has_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND))
+               return;
+
+       soup_uri = e_source_webdav_dup_soup_uri (e_source_get_extension 
(source, E_SOURCE_EXTENSION_WEBDAV_BACKEND));
+       if (!soup_uri)
+               return;
+
+       cbdav->priv->is_google = soup_uri->host && (
+               g_ascii_strcasecmp (soup_uri->host, "www.google.com") == 0 ||
+               g_ascii_strcasecmp (soup_uri->host, 
"apidata.googleusercontent.com") == 0);
+
+       cbdav->priv->is_icloud = soup_uri->host &&
+               e_util_utf8_strstrcase (soup_uri->host, ".icloud.com");
+
+       soup_uri_free (soup_uri);
+}
+
 static gboolean
 ecb_caldav_connect_sync (ECalMetaBackend *meta_backend,
                         const ENamedParameters *credentials,
@@ -127,12 +154,7 @@
 
                        e_source_set_connection_status (source, 
E_SOURCE_CONNECTION_STATUS_CONNECTED);
 
-                       cbdav->priv->is_google = soup_uri && soup_uri->host && (
-                               g_ascii_strcasecmp (soup_uri->host, 
"www.google.com") == 0 ||
-                               g_ascii_strcasecmp (soup_uri->host, 
"apidata.googleusercontent.com") == 0);
-
-                       cbdav->priv->is_icloud = soup_uri && soup_uri->host &&
-                               e_util_utf8_strstrcase (soup_uri->host, 
".icloud.com");
+                       ecb_caldav_update_tweaks (cbdav);
                } else {
                        gchar *uri;
 
@@ -896,7 +918,7 @@
 {
        ESourceWebdav *webdav_extension;
        SoupURI *soup_uri;
-       gchar *uri, *tmp, *filename;
+       gchar *uri, *tmp, *filename, *uid_hash = NULL;
 
        g_return_val_if_fail (E_IS_CAL_BACKEND_CALDAV (cbdav), NULL);
        g_return_val_if_fail (uid != NULL, NULL);
@@ -905,6 +927,16 @@
        soup_uri = e_source_webdav_dup_soup_uri (webdav_extension);
        g_return_val_if_fail (soup_uri != NULL, NULL);
 
+       /* UIDs with forward slashes can cause trouble, because the destination 
server can
+          consider them as a path delimiter. Double-encode the URL doesn't 
always work,
+          thus rather cause a mismatch between stored UID and its href on the 
server. */
+       if (strchr (uid, '/')) {
+               uid_hash = g_compute_checksum_for_string (G_CHECKSUM_SHA1, uid, 
-1);
+
+               if (uid_hash)
+                       uid = uid_hash;
+       }
+
        if (extension) {
                tmp = g_strconcat (uid, extension, NULL);
                filename = soup_uri_encode (tmp, NULL);
@@ -931,6 +963,7 @@
 
        soup_uri_free (soup_uri);
        g_free (filename);
+       g_free (uid_hash);
 
        return uri;
 }
@@ -1444,8 +1477,12 @@
        auth_extension = e_source_get_extension (source, extension_name);
        username = e_source_authentication_dup_user (auth_extension);
 
-       if (cbdav->priv->is_google)
+       if (cbdav->priv->is_google) {
                res = ecb_caldav_maybe_append_email_domain (username, 
"@gmail.com");
+       } else if (username && strchr (username, '@') && strrchr (username, 
'.') > strchr (username, '@')) {
+               res = username;
+               username = NULL;
+       }
 
        g_free (username);
 
@@ -1859,6 +1896,8 @@
                G_CALLBACK (ecb_caldav_dup_component_revision_cb), NULL);
 
        g_clear_object (&cal_cache);
+
+       ecb_caldav_update_tweaks (cbdav);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-data-server-3.26.5/src/camel/camel-mime-parser.c 
new/evolution-data-server-3.26.6/src/camel/camel-mime-parser.c
--- old/evolution-data-server-3.26.5/src/camel/camel-mime-parser.c      
2018-02-05 11:57:20.000000000 +0100
+++ new/evolution-data-server-3.26.6/src/camel/camel-mime-parser.c      
2018-03-05 11:10:55.000000000 +0100
@@ -1314,10 +1314,10 @@
                                                s->outptr[0] = 0;
 
                                                /* The outbuf can contain an 
extra \r\n, thus remove it */
-                                               if (s->outptr > s->outbuf && 
s->outptr[-1] == '\n')
+                                               if (s->outptr > s->outbuf && 
(s->outptr[-1] == '\r' || s->outptr[-1] == '\n'))
                                                        s->outptr[-1] = 0;
 
-                                               if (s->outptr - 1 > s->outbuf 
&& s->outptr[-2] == '\r')
+                                               if (s->outptr - 1 > s->outbuf 
&& (s->outptr[-2] == '\r' || s->outptr[-2] == '\n'))
                                                        s->outptr[-2] = 0;
 
                                                h (printf ("header not folded 
'%s' at %d\n", s->outbuf, (gint) s->header_start));
@@ -1408,6 +1408,16 @@
        header_append (s, start, inptr);
 
        s->outptr[0] = 0;
+
+       if (s->check_header_folded && s->midline) {
+               /* The outbuf can contain an extra \r\n, thus remove it */
+               if (s->outptr > s->outbuf && (s->outptr[-1] == '\r' || 
s->outptr[-1] == '\n'))
+                       s->outptr[-1] = 0;
+
+               if (s->outptr - 1 > s->outbuf && (s->outptr[-2] == '\r' || 
s->outptr[-2] == '\n'))
+                       s->outptr[-2] = 0;
+       }
+
        if (s->outbuf == s->outptr)
                goto header_done;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-data-server-3.26.5/src/libebackend/e-collection-backend.c 
new/evolution-data-server-3.26.6/src/libebackend/e-collection-backend.c
--- old/evolution-data-server-3.26.5/src/libebackend/e-collection-backend.c     
2018-02-05 11:57:20.000000000 +0100
+++ new/evolution-data-server-3.26.6/src/libebackend/e-collection-backend.c     
2018-03-05 11:10:55.000000000 +0100
@@ -210,13 +210,37 @@
 }
 
 static void
+collection_backend_remove_files (GSList *filenames, /* gchar * */
+                                const gchar *cache_dir,
+                                const gchar *reason)
+{
+       GSList *link;
+
+       for (link = filenames; link; link = g_slist_next (link)) {
+               const gchar *name = link->data;
+               gchar *filename;
+
+               filename = g_build_filename (cache_dir, name, NULL);
+               if (filename) {
+                       if (g_unlink (filename) == -1) {
+                               gint errn = errno;
+                               e_source_registry_debug_print ("%s: Failed to 
remove %s source '%s': %s\n", G_STRFUNC, reason, filename, g_strerror (errn));
+                       } else {
+                               e_source_registry_debug_print ("%s: Removed %s 
source '%s'\n", G_STRFUNC, reason, filename);
+                       }
+               }
+               g_free (filename);
+       }
+}
+
+static void
 collection_backend_load_resources (ECollectionBackend *backend)
 {
        ESourceRegistryServer *server;
        ECollectionBackendClass *class;
        GDir *dir;
        GFile *file;
-       GSList *remove_redundant = NULL, *link;
+       GSList *remove_redundant = NULL, *remove_broken = NULL;
        const gchar *name;
        const gchar *cache_dir;
        GError *error = NULL;
@@ -261,6 +285,9 @@
                        g_warn_if_fail (source == NULL);
                        g_warning ("%s: %s", G_STRFUNC, error->message);
                        g_clear_error (&error);
+
+                       /* Internal data, broken file for some reason, delete 
it */
+                       remove_broken = g_slist_prepend (remove_broken, 
g_strdup (name));
                        continue;
                }
 
@@ -287,23 +314,11 @@
        g_object_unref (server);
        g_dir_close (dir);
 
-       for (link = remove_redundant; link; link = g_slist_next (link)) {
-               const gchar *name = link->data;
-               gchar *filename;
-
-               filename = g_build_filename (cache_dir, name, NULL);
-               if (filename) {
-                       if (g_unlink (filename) == -1) {
-                               gint errn = errno;
-                               e_source_registry_debug_print ("%s: Failed to 
remove redundant source '%s': %s\n", G_STRFUNC, filename, g_strerror (errn));
-                       } else {
-                               e_source_registry_debug_print ("%s: Removed 
redundant source '%s'\n", G_STRFUNC, filename);
-                       }
-               }
-               g_free (filename);
-       }
+       collection_backend_remove_files (remove_redundant, cache_dir, 
"redundant");
+       collection_backend_remove_files (remove_broken, cache_dir, "broken");
 
        g_slist_free_full (remove_redundant, g_free);
+       g_slist_free_full (remove_broken, g_free);
 }
 
 static ESource *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/evolution-data-server-3.26.5/src/libedataserver/e-source.c 
new/evolution-data-server-3.26.6/src/libedataserver/e-source.c
--- old/evolution-data-server-3.26.5/src/libedataserver/e-source.c      
2018-02-05 11:57:20.000000000 +0100
+++ new/evolution-data-server-3.26.6/src/libedataserver/e-source.c      
2018-03-05 11:10:55.000000000 +0100
@@ -865,13 +865,6 @@
        if (g_source_is_destroyed (g_main_current_source ()))
                return FALSE;
 
-       /* If the ESource is still initializing itself in a different
-        * thread, skip the signal emission and try again on the next
-        * main loop iteration. This is a busy wait but it should be
-        * a very short wait. */
-       if (!source->priv->initialized)
-               return TRUE;
-
        g_mutex_lock (&source->priv->connection_status_change_lock);
        if (source->priv->connection_status_change != NULL) {
                g_source_unref (source->priv->connection_status_change);
@@ -905,7 +898,8 @@
                                         ESource *source)
 {
        g_mutex_lock (&source->priv->connection_status_change_lock);
-       if (source->priv->connection_status_change == NULL) {
+       if (source->priv->connection_status_change == NULL &&
+           source->priv->initialized) {
                source->priv->connection_status_change = g_idle_source_new ();
                g_source_set_callback (
                        source->priv->connection_status_change,
@@ -1031,13 +1025,6 @@
        if (g_source_is_destroyed (g_main_current_source ()))
                return FALSE;
 
-       /* If the ESource is still initializing itself in a different
-        * thread, skip the signal emission and try again on the next
-        * main loop iteration.  This is a busy wait but it should be
-        * a very short wait. */
-       if (!source->priv->initialized)
-               return TRUE;
-
        g_mutex_lock (&source->priv->changed_lock);
        if (source->priv->changed != NULL) {
                g_source_unref (source->priv->changed);
@@ -2031,15 +2018,6 @@
                source->priv->uid = e_util_generate_uid ();
        }
 
-       /* Try to avoid a spurious "changed" emission. */
-       g_mutex_lock (&source->priv->changed_lock);
-       if (source->priv->changed != NULL) {
-               g_source_destroy (source->priv->changed);
-               g_source_unref (source->priv->changed);
-               source->priv->changed = NULL;
-       }
-       g_mutex_unlock (&source->priv->changed_lock);
-
        source->priv->initialized = TRUE;
 
        return success;
@@ -2608,6 +2586,7 @@
 
        g_mutex_lock (&source->priv->changed_lock);
        if (!source->priv->ignore_changed_signal &&
+           source->priv->initialized &&
            source->priv->changed == NULL) {
                source->priv->changed = g_idle_source_new ();
                g_source_set_callback (


Reply via email to