From 78329a816db7e5dd23ca371628d74dbc6cf2a6a8 Mon Sep 17 00:00:00 2001 From: Tigro Date: Mon, 14 Oct 2013 13:16:28 +0400 Subject: [PATCH] update to 3.8.5 --- .abf.yml | 1 + ...-data-server-3.8.5-cert-viewer-crash.patch | 12 ++ ...ta-server-3.8.5-imapx-summary-vanish.patch | 156 ++++++++++++++++++ ...-server-3.8.5-maildir-tmp-autocreate.patch | 18 ++ evolution-data-server.spec | 10 +- 5 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 evolution-data-server-3.8.5-cert-viewer-crash.patch create mode 100644 evolution-data-server-3.8.5-imapx-summary-vanish.patch create mode 100644 evolution-data-server-3.8.5-maildir-tmp-autocreate.patch diff --git a/.abf.yml b/.abf.yml index 30cbcb1..56a3e34 100644 --- a/.abf.yml +++ b/.abf.yml @@ -5,3 +5,4 @@ sources: evolution-data-server-3.8.2.tar.xz: d8b6d2f3d65613a9c62e19cec5a53249e862709c evolution-data-server-3.8.3.tar.xz: 3bcd70d70b6901c2f3737bee5a96678245c9d996 evolution-data-server-3.8.4.tar.xz: 17ca14815197084696c96eddd14cc599925ba9ca + evolution-data-server-3.8.5.tar.xz: 8b720f6bdc01ec0ba22c6f82e25c222b9f89d6fa diff --git a/evolution-data-server-3.8.5-cert-viewer-crash.patch b/evolution-data-server-3.8.5-cert-viewer-crash.patch new file mode 100644 index 0000000..1294ef9 --- /dev/null +++ b/evolution-data-server-3.8.5-cert-viewer-crash.patch @@ -0,0 +1,12 @@ +diff -up evolution-data-server-3.8.5/modules/trust-prompt/certificate-viewer.c.cert-viewer-crash evolution-data-server-3.8.5/modules/trust-prompt/certificate-viewer.c +--- evolution-data-server-3.8.5/modules/trust-prompt/certificate-viewer.c.cert-viewer-crash 2013-07-23 13:57:38.000000000 +0200 ++++ evolution-data-server-3.8.5/modules/trust-prompt/certificate-viewer.c 2013-08-12 09:14:19.814379827 +0200 +@@ -538,7 +538,7 @@ get_window_title (CERTCertificate *cert) + return title; + } + +- return cert->subjectName; ++ return g_strdup (cert->subjectName); + } + + GtkWidget * diff --git a/evolution-data-server-3.8.5-imapx-summary-vanish.patch b/evolution-data-server-3.8.5-imapx-summary-vanish.patch new file mode 100644 index 0000000..a22fbb4 --- /dev/null +++ b/evolution-data-server-3.8.5-imapx-summary-vanish.patch @@ -0,0 +1,156 @@ +diff -up evolution-data-server-3.8.5/camel/camel-imapx-command.c.imapx-summary-vanish evolution-data-server-3.8.5/camel/camel-imapx-command.c +--- evolution-data-server-3.8.5/camel/camel-imapx-command.c.imapx-summary-vanish 2013-08-02 16:57:28.000000000 +0200 ++++ evolution-data-server-3.8.5/camel/camel-imapx-command.c 2013-10-09 12:49:22.007984356 +0200 +@@ -42,6 +42,9 @@ struct _CamelIMAPXRealCommand { + /* For building the part. */ + GString *buffer; + ++ /* For network/parse errors. */ ++ GError *error; ++ + /* Used for running some commands synchronously. */ + GCond done_sync_cond; + GMutex done_sync_mutex; +@@ -141,6 +144,8 @@ camel_imapx_command_unref (CamelIMAPXCom + + g_string_free (real_ic->buffer, TRUE); + ++ g_clear_error (&real_ic->error); ++ + g_cond_clear (&real_ic->done_sync_cond); + g_mutex_clear (&real_ic->done_sync_mutex); + +@@ -577,12 +582,50 @@ camel_imapx_command_done (CamelIMAPXComm + g_mutex_unlock (&real_ic->done_sync_mutex); + } + ++/** ++ * camel_imapx_command_failed: ++ * @ic: a #CamelIMAPXCommand ++ * @error: the error which caused the failure ++ * ++ * Copies @error to be returned in camel_imapx_command_set_error_if_failed(). ++ * Call this function if a networking or parsing error occurred to force all ++ * active IMAP commands to abort processing. ++ * ++ * Since: 3.10 ++ **/ ++void ++camel_imapx_command_failed (CamelIMAPXCommand *ic, ++ const GError *error) ++{ ++ CamelIMAPXRealCommand *real_ic; ++ ++ g_return_if_fail (CAMEL_IS_IMAPX_COMMAND (ic)); ++ g_return_if_fail (error != NULL); ++ ++ real_ic = (CamelIMAPXRealCommand *) ic; ++ g_return_if_fail (real_ic->error == NULL); ++ ++ real_ic->error = g_error_copy (error); ++} ++ + gboolean + camel_imapx_command_set_error_if_failed (CamelIMAPXCommand *ic, + GError **error) + { ++ CamelIMAPXRealCommand *real_ic; ++ + g_return_val_if_fail (CAMEL_IS_IMAPX_COMMAND (ic), FALSE); + ++ real_ic = (CamelIMAPXRealCommand *) ic; ++ ++ /* Check for a networking or parsing error. */ ++ if (real_ic->error != NULL) { ++ g_propagate_error (error, real_ic->error); ++ real_ic->error = NULL; ++ return TRUE; ++ } ++ ++ /* Check if the IMAP server rejected the command. */ + if (ic->status != NULL && ic->status->result != IMAPX_OK) { + + /* FIXME Map IMAP response codes to more +diff -up evolution-data-server-3.8.5/camel/camel-imapx-command.h.imapx-summary-vanish evolution-data-server-3.8.5/camel/camel-imapx-command.h +--- evolution-data-server-3.8.5/camel/camel-imapx-command.h.imapx-summary-vanish 2013-07-23 13:57:42.000000000 +0200 ++++ evolution-data-server-3.8.5/camel/camel-imapx-command.h 2013-10-09 12:49:22.008984356 +0200 +@@ -120,6 +120,8 @@ void camel_imapx_command_add_part (Came + void camel_imapx_command_close (CamelIMAPXCommand *ic); + void camel_imapx_command_wait (CamelIMAPXCommand *ic); + void camel_imapx_command_done (CamelIMAPXCommand *ic); ++void camel_imapx_command_failed (CamelIMAPXCommand *ic, ++ const GError *error); + gboolean camel_imapx_command_set_error_if_failed + (CamelIMAPXCommand *ic, + GError **error); +diff -up evolution-data-server-3.8.5/camel/camel-imapx-server.c.imapx-summary-vanish evolution-data-server-3.8.5/camel/camel-imapx-server.c +--- evolution-data-server-3.8.5/camel/camel-imapx-server.c.imapx-summary-vanish 2013-07-23 13:57:58.000000000 +0200 ++++ evolution-data-server-3.8.5/camel/camel-imapx-server.c 2013-10-09 12:49:22.011984355 +0200 +@@ -6795,10 +6795,9 @@ imapx_job_sync_changes_matches (CamelIMA + return camel_imapx_job_has_folder (job, folder); + } + +-/* we cancel all the commands and their jobs, so associated jobs will be notified */ + static void +-cancel_all_jobs (CamelIMAPXServer *is, +- GError *error) ++imapx_abort_all_commands (CamelIMAPXServer *is, ++ const GError *error) + { + CamelIMAPXCommandQueue *queue; + GList *head, *link; +@@ -6819,7 +6818,6 @@ cancel_all_jobs (CamelIMAPXServer *is, + + for (link = head; link != NULL; link = g_list_next (link)) { + CamelIMAPXCommand *ic = link->data; +- CamelIMAPXJob *job; + + /* Sanity check the CamelIMAPXCommand before proceeding. + * XXX We are actually getting reports of crashes here... +@@ -6827,17 +6825,15 @@ cancel_all_jobs (CamelIMAPXServer *is, + if (ic == NULL) + continue; + +- /* Similarly with the CamelIMAPXJob contained within. */ +- job = camel_imapx_command_get_job (ic); +- if (!CAMEL_IS_IMAPX_JOB (job)) +- continue; +- +- camel_imapx_job_cancel (job); +- +- /* Send a NULL GError since we already cancelled +- * the job and we're not interested in individual +- * command errors. */ +- ic->complete (is, ic, camel_imapx_job_get_cancellable (job), NULL); ++ /* Insert an error into the CamelIMAPXCommand to be ++ * propagated when the completion callback function ++ * calls camel_imapx_command_set_error_if_failed(). */ ++ camel_imapx_command_failed (ic, error); ++ ++ /* Invoke the completion callback function so it can ++ * perform any cleanup processing and unregister its ++ * CamelIMAPXJob. */ ++ ic->complete (is, ic, NULL, NULL); + } + + camel_imapx_command_queue_free (queue); +@@ -6963,7 +6959,7 @@ imapx_parser_thread (gpointer d) + is->state = IMAPX_SHUTDOWN; + QUEUE_UNLOCK (is); + +- cancel_all_jobs (is, local_error); ++ imapx_abort_all_commands (is, local_error); + + g_clear_error (&local_error); + +diff -up evolution-data-server-3.8.5/docs/reference/camel/camel-sections.txt.imapx-summary-vanish evolution-data-server-3.8.5/docs/reference/camel/camel-sections.txt +--- evolution-data-server-3.8.5/docs/reference/camel/camel-sections.txt.imapx-summary-vanish 2013-08-11 13:26:25.000000000 +0200 ++++ evolution-data-server-3.8.5/docs/reference/camel/camel-sections.txt 2013-10-09 12:49:22.012984355 +0200 +@@ -754,6 +754,7 @@ camel_imapx_command_add_part + camel_imapx_command_close + camel_imapx_command_wait + camel_imapx_command_done ++camel_imapx_command_failed + camel_imapx_command_set_error_if_failed + CamelIMAPXCommandQueue + camel_imapx_command_queue_new diff --git a/evolution-data-server-3.8.5-maildir-tmp-autocreate.patch b/evolution-data-server-3.8.5-maildir-tmp-autocreate.patch new file mode 100644 index 0000000..05a4811 --- /dev/null +++ b/evolution-data-server-3.8.5-maildir-tmp-autocreate.patch @@ -0,0 +1,18 @@ +diff -up evolution-data-server-3.8.5/camel/providers/local/camel-maildir-store.c.maildir-tmp-autocreate evolution-data-server-3.8.5/camel/providers/local/camel-maildir-store.c +--- evolution-data-server-3.8.5/camel/providers/local/camel-maildir-store.c.maildir-tmp-autocreate 2013-07-23 13:57:51.000000000 +0200 ++++ evolution-data-server-3.8.5/camel/providers/local/camel-maildir-store.c 2013-08-12 10:31:18.600063994 +0200 +@@ -506,9 +506,11 @@ scan_fi (CamelStore *store, + cur = g_build_filename (path, dir_name, "cur", NULL); + new = g_build_filename (path, dir_name, "new", NULL); + +- if (!(g_stat (tmp, &st) == 0 && S_ISDIR (st.st_mode) +- && g_stat (cur, &st) == 0 && S_ISDIR (st.st_mode) +- && g_stat (new, &st) == 0 && S_ISDIR (st.st_mode))) ++ if (!(g_stat (cur, &st) == 0 && S_ISDIR (st.st_mode) ++ && g_stat (new, &st) == 0 && S_ISDIR (st.st_mode) ++ /* Create 'tmp' dir on demand, if other directories are there, ++ because some backup tools can drop the 'tmp' directory. */ ++ && ((g_stat (tmp, &st) == 0 && S_ISDIR (st.st_mode)) || g_mkdir (tmp, 0700) == 0))) + fi->flags |= CAMEL_FOLDER_NOSELECT; + + g_free (new); diff --git a/evolution-data-server.spec b/evolution-data-server.spec index 0bb309c..8ffcf7d 100644 --- a/evolution-data-server.spec +++ b/evolution-data-server.spec @@ -45,13 +45,20 @@ Name: evolution-data-server Summary: Evolution Data Server -Version: 3.8.4 +Version: 3.8.5 Release: 1 License: LGPLv2+ Group: System/Libraries URL: http://www.gnome.org/projects/evolution/ Source0: ftp://ftp.gnome.org/pub/GNOME/sources/%{name}/3.8/%{name}-%{version}.tar.xz +# RH bug #995516 +Patch02: evolution-data-server-3.8.5-cert-viewer-crash.patch +# RH bug #995702 +Patch03: evolution-data-server-3.8.5-maildir-tmp-autocreate.patch +# GNOME bug #704513 +Patch04: evolution-data-server-3.8.5-imapx-summary-vanish.patch + BuildRequires: bison BuildRequires: db-devel BuildRequires: gettext @@ -236,6 +243,7 @@ GObject Introspection interface description for %{name}. %prep %setup -q +%apply_patches %build %configure2_5x \