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 (