diff --git a/SOURCES/evolution-data-server-3.22.7-deadlock-categories-finalize.patch b/SOURCES/evolution-data-server-3.22.7-deadlock-categories-finalize.patch new file mode 100644 index 0000000..09b2795 --- /dev/null +++ b/SOURCES/evolution-data-server-3.22.7-deadlock-categories-finalize.patch @@ -0,0 +1,62 @@ +diff -up evolution-data-server-3.22.7/libedataserver/e-categories.c.deadlock-categories-finalize evolution-data-server-3.22.7/libedataserver/e-categories.c +--- evolution-data-server-3.22.7/libedataserver/e-categories.c.deadlock-categories-finalize 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/libedataserver/e-categories.c 2017-10-19 17:44:13.306338284 +0200 +@@ -224,8 +224,9 @@ hash_to_xml_string (gpointer key, + g_string_append_len (string, "/>\n", 3); + } + +-static gboolean +-idle_saver_cb (gpointer user_data) ++/* Called with the @categories lock locked */ ++static void ++idle_saver_save (void) + { + GString *buffer; + gchar *contents; +@@ -234,8 +235,6 @@ idle_saver_cb (gpointer user_data) + EChangedListener *emit_listeners = NULL; /* owned */ + GError *error = NULL; + +- G_LOCK (categories); +- + if (!save_is_pending) + goto exit; + +@@ -269,14 +268,26 @@ idle_saver_cb (gpointer user_data) + exit: + idle_id = 0; + +- G_UNLOCK (categories); +- + /* Emit the signal with the lock released to avoid re-entrancy + * deadlocks. Hold a reference to @listeners until this is complete. */ + if (emit_listeners) { ++ G_UNLOCK (categories); ++ + g_signal_emit_by_name (emit_listeners, "changed"); + g_object_unref (emit_listeners); ++ ++ G_LOCK (categories); + } ++} ++ ++static gboolean ++idle_saver_cb (gpointer user_data) ++{ ++ G_LOCK (categories); ++ ++ idle_saver_save (); ++ ++ G_UNLOCK (categories); + + return FALSE; + } +@@ -462,7 +473,7 @@ finalize_categories (void) + G_LOCK (categories); + + if (save_is_pending) +- idle_saver_cb (NULL); ++ idle_saver_save (); + + if (idle_id > 0) { + g_source_remove (idle_id); diff --git a/SOURCES/evolution-data-server-3.22.7-goa-prefer-ssl.patch b/SOURCES/evolution-data-server-3.22.7-goa-prefer-ssl.patch new file mode 100644 index 0000000..a8b96ca --- /dev/null +++ b/SOURCES/evolution-data-server-3.22.7-goa-prefer-ssl.patch @@ -0,0 +1,51 @@ +diff -up evolution-data-server-3.22.7/modules/gnome-online-accounts/module-gnome-online-accounts.c.goa-prefer-ssl evolution-data-server-3.22.7/modules/gnome-online-accounts/module-gnome-online-accounts.c +--- evolution-data-server-3.22.7/modules/gnome-online-accounts/module-gnome-online-accounts.c.goa-prefer-ssl 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/modules/gnome-online-accounts/module-gnome-online-accounts.c 2017-10-19 17:31:45.489348625 +0200 +@@ -392,13 +392,11 @@ gnome_online_accounts_config_imap (EGnom + CAMEL_NETWORK_SETTINGS (settings), + goa_mail_get_imap_user_name (goa_mail)); + +- /* Prefer "use_tls" over "use_ssl" if both are set. */ ++ /* Prefer "use_ssl" over "use_tls" if both are set. */ + camel_network_settings_set_security_method ( + CAMEL_NETWORK_SETTINGS (settings), +- use_tls ? +- CAMEL_NETWORK_SECURITY_METHOD_STARTTLS_ON_STANDARD_PORT : +- use_ssl ? +- CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT : ++ use_ssl ? CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT : ++ use_tls ? CAMEL_NETWORK_SECURITY_METHOD_STARTTLS_ON_STANDARD_PORT : + CAMEL_NETWORK_SECURITY_METHOD_NONE); + + g_object_unref (network_address); +@@ -477,13 +475,11 @@ gnome_online_accounts_config_smtp (EGnom + CAMEL_NETWORK_SETTINGS (settings), + gnome_online_accounts_get_smtp_auth (goa_mail)); + +- /* Prefer "use_tls" over "use_ssl" if both are set. */ ++ /* Prefer "use_ssl" over "use_tls" if both are set. */ + camel_network_settings_set_security_method ( + CAMEL_NETWORK_SETTINGS (settings), +- use_tls ? +- CAMEL_NETWORK_SECURITY_METHOD_STARTTLS_ON_STANDARD_PORT : +- use_ssl ? +- CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT : ++ use_ssl ? CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT : ++ use_tls ? CAMEL_NETWORK_SECURITY_METHOD_STARTTLS_ON_STANDARD_PORT : + CAMEL_NETWORK_SECURITY_METHOD_NONE); + + g_object_unref (network_address); +diff -up evolution-data-server-3.22.7/modules/google-backend/module-google-backend.c.goa-prefer-ssl evolution-data-server-3.22.7/modules/google-backend/module-google-backend.c +--- evolution-data-server-3.22.7/modules/google-backend/module-google-backend.c.goa-prefer-ssl 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/modules/google-backend/module-google-backend.c 2017-10-19 17:31:52.929348522 +0200 +@@ -49,8 +49,8 @@ + /* SMTP Configuration Details */ + #define GOOGLE_SMTP_BACKEND_NAME "smtp" + #define GOOGLE_SMTP_HOST "smtp.googlemail.com" +-#define GOOGLE_SMTP_PORT 587 +-#define GOOGLE_SMTP_SECURITY_METHOD METHOD (STARTTLS_ON_STANDARD_PORT) ++#define GOOGLE_SMTP_PORT 465 ++#define GOOGLE_SMTP_SECURITY_METHOD METHOD (SSL_ON_ALTERNATE_PORT) + + /* Contacts Configuration Details */ + #define GOOGLE_CONTACTS_BACKEND_NAME "google" diff --git a/SOURCES/evolution-data-server-3.22.7-gtype-init-workaround.patch b/SOURCES/evolution-data-server-3.22.7-gtype-init-workaround.patch new file mode 100644 index 0000000..4955600 --- /dev/null +++ b/SOURCES/evolution-data-server-3.22.7-gtype-init-workaround.patch @@ -0,0 +1,84 @@ +diff -up evolution-data-server-3.22.7/addressbook/libedata-book/evolution-addressbook-factory-subprocess.c.gtype-init-workaround evolution-data-server-3.22.7/addressbook/libedata-book/evolution-addressbook-factory-subprocess.c +--- evolution-data-server-3.22.7/addressbook/libedata-book/evolution-addressbook-factory-subprocess.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/addressbook/libedata-book/evolution-addressbook-factory-subprocess.c 2017-11-14 11:40:44.056226796 +0100 +@@ -168,6 +168,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + #if defined (ENABLE_MAINTAINER_MODE) && defined (HAVE_GTK) + if (g_getenv ("EDS_TESTING") == NULL) +diff -up evolution-data-server-3.22.7/calendar/libedata-cal/evolution-calendar-factory-subprocess.c.gtype-init-workaround evolution-data-server-3.22.7/calendar/libedata-cal/evolution-calendar-factory-subprocess.c +--- evolution-data-server-3.22.7/calendar/libedata-cal/evolution-calendar-factory-subprocess.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/calendar/libedata-cal/evolution-calendar-factory-subprocess.c 2017-11-14 11:40:44.056226796 +0100 +@@ -165,6 +165,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + #if defined (ENABLE_MAINTAINER_MODE) && defined (HAVE_GTK) + if (g_getenv ("EDS_TESTING") == NULL) +diff -up evolution-data-server-3.22.7/libedataserver/e-source-registry.c.gtype-init-workaround evolution-data-server-3.22.7/libedataserver/e-source-registry.c +--- evolution-data-server-3.22.7/libedataserver/e-source-registry.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/libedataserver/e-source-registry.c 2017-11-14 11:40:44.056226796 +0100 +@@ -1758,6 +1758,8 @@ e_source_registry_new_sync (GCancellable + * until GObject's type initialization deadlock issue is fixed. + * Apparently only the synchronous instantiation is affected. */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + registry = source_registry_dup_uninitialized_singleton (); + +diff -up evolution-data-server-3.22.7/services/evolution-addressbook-factory/evolution-addressbook-factory.c.gtype-init-workaround evolution-data-server-3.22.7/services/evolution-addressbook-factory/evolution-addressbook-factory.c +--- evolution-data-server-3.22.7/services/evolution-addressbook-factory/evolution-addressbook-factory.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/services/evolution-addressbook-factory/evolution-addressbook-factory.c 2017-11-14 11:40:44.056226796 +0100 +@@ -58,6 +58,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + #if defined (ENABLE_MAINTAINER_MODE) && defined (HAVE_GTK) + if (g_getenv ("EDS_TESTING") == NULL) +diff -up evolution-data-server-3.22.7/services/evolution-calendar-factory/evolution-calendar-factory.c.gtype-init-workaround evolution-data-server-3.22.7/services/evolution-calendar-factory/evolution-calendar-factory.c +--- evolution-data-server-3.22.7/services/evolution-calendar-factory/evolution-calendar-factory.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/services/evolution-calendar-factory/evolution-calendar-factory.c 2017-11-14 11:40:44.056226796 +0100 +@@ -60,6 +60,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + #if defined (ENABLE_MAINTAINER_MODE) && defined (HAVE_GTK) + if (g_getenv ("EDS_TESTING") == NULL) +diff -up evolution-data-server-3.22.7/services/evolution-source-registry/evolution-source-registry.c.gtype-init-workaround evolution-data-server-3.22.7/services/evolution-source-registry/evolution-source-registry.c +--- evolution-data-server-3.22.7/services/evolution-source-registry/evolution-source-registry.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/services/evolution-source-registry/evolution-source-registry.c 2017-11-14 11:40:44.056226796 +0100 +@@ -158,6 +158,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + #if defined (ENABLE_MAINTAINER_MODE) && defined (HAVE_GTK) + if (g_getenv ("EDS_TESTING") == NULL) +diff -up evolution-data-server-3.22.7/services/evolution-user-prompter/evolution-user-prompter.c.gtype-init-workaround evolution-data-server-3.22.7/services/evolution-user-prompter/evolution-user-prompter.c +--- evolution-data-server-3.22.7/services/evolution-user-prompter/evolution-user-prompter.c.gtype-init-workaround 2017-03-20 10:07:46.000000000 +0100 ++++ evolution-data-server-3.22.7/services/evolution-user-prompter/evolution-user-prompter.c 2017-11-14 11:40:44.056226796 +0100 +@@ -52,6 +52,8 @@ main (gint argc, + + /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ + g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); + + prompt_user_init (&argc, &argv); + diff --git a/SPECS/evolution-data-server.spec b/SPECS/evolution-data-server.spec index c6f11e6..48d76e1 100644 --- a/SPECS/evolution-data-server.spec +++ b/SPECS/evolution-data-server.spec @@ -35,7 +35,7 @@ Name: evolution-data-server Version: 3.22.7 -Release: 6%{?dist} +Release: 8%{?dist} Group: System Environment/Libraries Summary: Backend data server for Evolution License: LGPLv2+ @@ -73,6 +73,15 @@ Patch07: evolution-data-server-3.22.7-imapx-subscriptions.patch # RH bug #1444075 Patch08: evolution-data-server-3.22.7-imapx-idle-server-leak.patch +# RH bug #1504071 +Patch09: evolution-data-server-3.22.7-goa-prefer-ssl.patch + +# RH bug #1476329 +Patch10: evolution-data-server-3.22.7-deadlock-categories-finalize.patch + +# RH bug #1512860 +Patch11: evolution-data-server-3.22.7-gtype-init-workaround.patch + ### Dependencies ### Requires: dconf @@ -189,6 +198,9 @@ the functionality of the installed %{name} package. %patch06 -p1 -b .use-after-free-component-summary-set %patch07 -p1 -b .imapx-subscriptions %patch08 -p1 -b .imapx-idle-server-leak +%patch09 -p1 -b .goa-prefer-ssl +%patch10 -p1 -b .deadlock-categories-finalize +%patch11 -p1 -b .gtype-init-workaround %build %if %{ldap_support} @@ -461,6 +473,13 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/installed-tests %changelog +* Thu Nov 16 2017 Milan Crha - 3.22.7-8 +- Add patch for RH bug #1512860 (Add workaround for glib type init deadlock) + +* Thu Oct 19 2017 Milan Crha - 3.22.7-7 +- Add patch for RH bug #1504071 (Prefer SSL over STARTTLS for mail when both are set in GOA) +- Add patch for RH bug #1476329 (Deadlock on exit under e-categories.c:finalize_categories()) + * Mon Jun 05 2017 Milan Crha - 3.22.7-6 - Add patch for RH bug #1444075 ([IMAPx] Fix a memory leak of CamelIMAPXServer)