diff --git a/.evolution-ews.metadata b/.evolution-ews.metadata new file mode 100644 index 0000000..1da7b8f --- /dev/null +++ b/.evolution-ews.metadata @@ -0,0 +1 @@ +78072b4913ec2158de4aa6f3782891ea4146f3e7 evolution-ews-3.40.4.tar.xz diff --git a/0002-deadlock-on-op-cancel.patch b/0002-deadlock-on-op-cancel.patch new file mode 100644 index 0000000..dd01a12 --- /dev/null +++ b/0002-deadlock-on-op-cancel.patch @@ -0,0 +1,45 @@ +From a80c55fee430452072540f06a1ae1271cd7a9650 Mon Sep 17 00:00:00 2001 +Date: Tue, 31 Aug 2021 17:40:07 +0200 +Subject: [PATCH] EEwsConnection: Release queue lock as soon as possible in + ews_next_request() + +This could cause a deadlock when other thread cancels an ongoing +request (the ews_next_request() thread inside the e_ews_connection_utils_prepare_message()) +and the ews_cancel_request() is called as the callback to the GCancellable::cancelled +signal. +--- + src/EWS/common/e-ews-connection.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/EWS/common/e-ews-connection.c b/src/EWS/common/e-ews-connection.c +index 1ecacb19..0d7dcb25 100644 +--- a/src/EWS/common/e-ews-connection.c ++++ b/src/EWS/common/e-ews-connection.c +@@ -711,22 +711,20 @@ ews_next_request (gpointer _cnc) + /* Add to active job queue */ + cnc->priv->active_job_queue = g_slist_append (cnc->priv->active_job_queue, node); + ++ QUEUE_UNLOCK (cnc); ++ + if (cnc->priv->soup_session) { + SoupMessage *msg = SOUP_MESSAGE (node->msg); + + if (!e_ews_connection_utils_prepare_message (cnc, NULL, msg, node->cancellable)) { + e_ews_debug_dump_raw_soup_request (msg); +- QUEUE_UNLOCK (cnc); + + ews_response_cb (cnc->priv->soup_session, msg, node); + } else { + e_ews_debug_dump_raw_soup_request (msg); + soup_session_queue_message (cnc->priv->soup_session, msg, ews_response_cb, node); +- QUEUE_UNLOCK (cnc); + } + } else { +- QUEUE_UNLOCK (cnc); +- + ews_cancel_request (NULL, node); + } + +-- +GitLab + diff --git a/evolution-ews.spec b/evolution-ews.spec index f98a1ee..cd01de4 100644 --- a/evolution-ews.spec +++ b/evolution-ews.spec @@ -6,13 +6,14 @@ Name: evolution-ews Version: 3.40.4 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Evolution extension for Exchange Web Services License: LGPLv2+ URL: https://wiki.gnome.org/Apps/Evolution Source: http://download.gnome.org/sources/%{name}/3.40/%{name}-%{version}.tar.xz Patch01: 0001-I-250-Mail-Calendar-attachments-can-be-broken-by-the.patch +Patch02: 0002-deadlock-on-op-cancel.patch %global eds_evo_version %{version} @@ -94,6 +95,9 @@ export CFLAGS="$RPM_OPT_FLAGS -Wno-deprecated-declarations" %files langpacks -f %{name}.lang %changelog +* Mon Feb 12 2024 Milan Crha - 3.40.4-3 +- Resolves: RHEL-25069 (Release queue lock as soon as possible in ews_next_request()) + * Wed Dec 13 2023 Milan Crha - 3.40.4-2 - Resolves: RHEL-19371 (Backport upstream patch to workaround broken text/calendar mail attachments by the server)