diff -Nru evolution-ews-3.44.0/CMakeLists.txt evolution-ews-3.44.1/CMakeLists.txt --- evolution-ews-3.44.0/CMakeLists.txt 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/CMakeLists.txt 2022-04-22 06:04:11.000000000 +0000 @@ -4,7 +4,7 @@ cmake_policy(VERSION 3.1) project(evolution-ews - VERSION 3.44.0 + VERSION 3.44.1 LANGUAGES C) set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-ews/issues/") diff -Nru evolution-ews-3.44.0/debian/changelog evolution-ews-3.44.1/debian/changelog --- evolution-ews-3.44.0/debian/changelog 2022-03-18 12:38:44.000000000 +0000 +++ evolution-ews-3.44.1/debian/changelog 2022-04-29 19:38:36.000000000 +0000 @@ -1,3 +1,16 @@ +evolution-ews (3.44.1-2) unstable; urgency=medium + + * Cherry-pick patch to fix running GNOME Contacts 42 (Closes: #1009660) + + -- Jeremy Bicha Fri, 29 Apr 2022 15:38:36 -0400 + +evolution-ews (3.44.1-1) unstable; urgency=medium + + * New upstream release + * Bump evolution and evolution-data-server build dependencies to >= 3.44.1 + + -- Jeremy Bicha Fri, 22 Apr 2022 11:01:36 -0400 + evolution-ews (3.44.0-1) unstable; urgency=medium * New upstream release diff -Nru evolution-ews-3.44.0/debian/control evolution-ews-3.44.1/debian/control --- evolution-ews-3.44.0/debian/control 2022-03-18 12:38:44.000000000 +0000 +++ evolution-ews-3.44.1/debian/control 2022-04-29 19:38:36.000000000 +0000 @@ -6,20 +6,20 @@ Section: gnome Priority: optional Maintainer: Debian GNOME Maintainers -Uploaders: Iain Lane , Jeremy Bicha , Michael Biebl +Uploaders: Iain Lane , Jeremy Bicha , Michael Biebl Build-Depends: cmake, debhelper-compat (= 13), dh-sequence-gnome, gtk-doc-tools (>= 1.9), - evolution-dev (>= 3.44.0), - evolution-data-server-dev (>= 3.44.0), - libcamel1.2-dev (>= 3.44.0), - libedataserver1.2-dev (>= 3.44.0), - libebackend1.2-dev (>= 3.44.0), - libecal2.0-dev (>= 3.44.0), - libedata-cal2.0-dev (>= 3.44.0), - libebook1.2-dev (>= 3.44.0), - libedata-book1.2-dev (>= 3.44.0), + evolution-dev (>= 3.44.1), + evolution-data-server-dev (>= 3.44.1), + libcamel1.2-dev (>= 3.44.1), + libedataserver1.2-dev (>= 3.44.1), + libebackend1.2-dev (>= 3.44.1), + libecal2.0-dev (>= 3.44.1), + libedata-cal2.0-dev (>= 3.44.1), + libebook1.2-dev (>= 3.44.1), + libedata-book1.2-dev (>= 3.44.1), libglib2.0-dev (>= 2.62), libgtk-3-dev (>= 3.0), libjson-glib-dev, diff -Nru evolution-ews-3.44.0/debian/control.in evolution-ews-3.44.1/debian/control.in --- evolution-ews-3.44.0/debian/control.in 2022-03-18 12:38:44.000000000 +0000 +++ evolution-ews-3.44.1/debian/control.in 2022-04-29 19:38:36.000000000 +0000 @@ -7,15 +7,15 @@ debhelper-compat (= 13), dh-sequence-gnome, gtk-doc-tools (>= 1.9), - evolution-dev (>= 3.44.0), - evolution-data-server-dev (>= 3.44.0), - libcamel1.2-dev (>= 3.44.0), - libedataserver1.2-dev (>= 3.44.0), - libebackend1.2-dev (>= 3.44.0), - libecal2.0-dev (>= 3.44.0), - libedata-cal2.0-dev (>= 3.44.0), - libebook1.2-dev (>= 3.44.0), - libedata-book1.2-dev (>= 3.44.0), + evolution-dev (>= 3.44.1), + evolution-data-server-dev (>= 3.44.1), + libcamel1.2-dev (>= 3.44.1), + libedataserver1.2-dev (>= 3.44.1), + libebackend1.2-dev (>= 3.44.1), + libecal2.0-dev (>= 3.44.1), + libedata-cal2.0-dev (>= 3.44.1), + libebook1.2-dev (>= 3.44.1), + libedata-book1.2-dev (>= 3.44.1), libglib2.0-dev (>= 2.62), libgtk-3-dev (>= 3.0), libjson-glib-dev, diff -Nru evolution-ews-3.44.0/debian/patches/build-Limit-which-parts-link-to-the-evolution-libraries-a.patch evolution-ews-3.44.1/debian/patches/build-Limit-which-parts-link-to-the-evolution-libraries-a.patch --- evolution-ews-3.44.0/debian/patches/build-Limit-which-parts-link-to-the-evolution-libraries-a.patch 1970-01-01 00:00:00.000000000 +0000 +++ evolution-ews-3.44.1/debian/patches/build-Limit-which-parts-link-to-the-evolution-libraries-a.patch 2022-04-29 19:38:36.000000000 +0000 @@ -0,0 +1,1067 @@ +From: Milan Crha +Date: Fri, 29 Apr 2022 10:23:57 +0200 +Subject: build: Limit which parts link to the evolution libraries (and gtk+) + +Due to linking with Evolution in libraries not being used only in Evolution, +the code could bring the GUI libraries into processes unexpectedly, +especially gtk3 into a gtk4 application, which cannot be done. + +This change limits the linkage to the Evolution to necessary minimum, +for a price of a small code duplication. + +Related to https://gitlab.gnome.org/GNOME/gnome-contacts/-/issues/222 + +(cherry picked from commit 38c252cb336ba78b256f74e051591e9cf3142144) +--- + src/EWS/camel/CMakeLists.txt | 12 -- + src/EWS/camel/camel-ews-search.c | 35 +++++- + src/EWS/camel/camel-ews-store.c | 37 +----- + src/EWS/camel/camel-ews-transport.c | 175 +++++++++++++++++++++++--- + src/EWS/camel/camel-ews-utils.c | 20 +-- + src/EWS/common/CMakeLists.txt | 3 - + src/EWS/common/e-ews-calendar-utils.c | 23 +++- + src/EWS/common/e-ews-folder.c | 30 ++--- + src/EWS/common/e-ews-folder.h | 6 +- + src/Microsoft365/camel/CMakeLists.txt | 6 - + src/Microsoft365/camel/camel-m365-store.c | 13 +- + src/Microsoft365/camel/camel-m365-transport.c | 175 +++++++++++++++++++++++--- + src/Microsoft365/camel/camel-m365-utils.c | 17 +-- + 13 files changed, 402 insertions(+), 150 deletions(-) + +diff --git a/src/EWS/camel/CMakeLists.txt b/src/EWS/camel/CMakeLists.txt +index e734a3b..d9b5c20 100644 +--- a/src/EWS/camel/CMakeLists.txt ++++ b/src/EWS/camel/CMakeLists.txt +@@ -50,8 +50,6 @@ target_compile_definitions(camelews-priv PRIVATE + + target_compile_options(camelews-priv PUBLIC + ${CAMEL_CFLAGS} +- ${EVOLUTION_SHELL_CFLAGS} +- ${EVOLUTION_MAIL_CFLAGS} + ${LIBEDATASERVER_CFLAGS} + ${LIBECAL_CFLAGS} + ${SOUP_CFLAGS} +@@ -65,8 +63,6 @@ target_include_directories(camelews-priv PUBLIC + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CAMEL_INCLUDE_DIRS} +- ${EVOLUTION_SHELL_INCLUDE_DIRS} +- ${EVOLUTION_MAIL_INCLUDE_DIRS} + ${LIBEDATASERVER_INCLUDE_DIRS} + ${LIBECAL_INCLUDE_DIRS} + ${SOUP_INCLUDE_DIRS} +@@ -75,8 +71,6 @@ target_include_directories(camelews-priv PUBLIC + target_link_libraries(camelews-priv + ${DEPENDENCIES} + ${CAMEL_LDFLAGS} +- ${EVOLUTION_SHELL_LDFLAGS} +- ${EVOLUTION_MAIL_LDFLAGS} + ${LIBEDATASERVER_LDFLAGS} + ${LIBECAL_LDFLAGS} + ${SOUP_LDFLAGS} +@@ -114,8 +108,6 @@ target_compile_definitions(camelews PRIVATE + + target_compile_options(camelews PUBLIC + ${CAMEL_CFLAGS} +- ${EVOLUTION_SHELL_CFLAGS} +- ${EVOLUTION_MAIL_CFLAGS} + ${LIBEDATASERVER_CFLAGS} + ${LIBECAL_CFLAGS} + ${SOUP_CFLAGS} +@@ -128,8 +120,6 @@ target_include_directories(camelews PUBLIC + ${CMAKE_SOURCE_DIR}/src/EWS + ${CMAKE_CURRENT_BINARY_DIR} + ${CAMEL_INCLUDE_DIRS} +- ${EVOLUTION_SHELL_INCLUDE_DIRS} +- ${EVOLUTION_MAIL_INCLUDE_DIRS} + ${LIBEDATASERVER_INCLUDE_DIRS} + ${LIBECAL_INCLUDE_DIRS} + ${SOUP_INCLUDE_DIRS} +@@ -138,8 +128,6 @@ target_include_directories(camelews PUBLIC + target_link_libraries(camelews + ${DEPENDENCIES} + ${CAMEL_LDFLAGS} +- ${EVOLUTION_SHELL_LDFLAGS} +- ${EVOLUTION_MAIL_LDFLAGS} + ${LIBEDATASERVER_LDFLAGS} + ${LIBECAL_LDFLAGS} + ${SOUP_LDFLAGS} +diff --git a/src/EWS/camel/camel-ews-search.c b/src/EWS/camel/camel-ews-search.c +index 30d76cb..f42c442 100644 +--- a/src/EWS/camel/camel-ews-search.c ++++ b/src/EWS/camel/camel-ews-search.c +@@ -9,7 +9,6 @@ + #include + #include + #include +-#include + + #include "common/e-ews-query-to-restriction.h" + +@@ -190,6 +189,38 @@ ews_search_describe_criteria (const GPtrArray *words) + return g_string_free (desc, FALSE); + } + ++/* This is copy of e_str_replace_string(), to not depend on the evolution code ++ in the library code (and to not bring gtk+ into random processes). */ ++static GString * ++ews_str_replace_string (const gchar *text, ++ const gchar *before, ++ const gchar *after) ++{ ++ const gchar *p, *next; ++ GString *str; ++ gint find_len; ++ ++ g_return_val_if_fail (text != NULL, NULL); ++ g_return_val_if_fail (before != NULL, NULL); ++ g_return_val_if_fail (*before, NULL); ++ ++ find_len = strlen (before); ++ str = g_string_new (""); ++ ++ p = text; ++ while (next = strstr (p, before), next) { ++ if (p < next) ++ g_string_append_len (str, p, next - p); ++ ++ if (after && *after) ++ g_string_append (str, after); ++ ++ p = next + find_len; ++ } ++ ++ return g_string_append (str, p); ++} ++ + static CamelSExpResult * + ews_search_process_criteria (CamelSExp *sexp, + CamelFolderSearch *search, +@@ -254,7 +285,7 @@ ews_search_process_criteria (CamelSExp *sexp, + for (ii = 0; ii < words->len; ii++) { + GString *word; + +- word = e_str_replace_string (g_ptr_array_index (words, ii), "\"", "\\\""); ++ word = ews_str_replace_string (g_ptr_array_index (words, ii), "\"", "\\\""); + + g_string_append (expression, "(body-contains \""); + g_string_append (expression, word->str); +diff --git a/src/EWS/camel/camel-ews-store.c b/src/EWS/camel/camel-ews-store.c +index 205ea02..439d61e 100644 +--- a/src/EWS/camel/camel-ews-store.c ++++ b/src/EWS/camel/camel-ews-store.c +@@ -18,8 +18,6 @@ + #include + #include + +-#include +- + #include "common/camel-ews-settings.h" + #include "common/e-ews-item-change.h" + #include "common/e-ews-message.h" +@@ -2545,23 +2543,17 @@ folder_info_from_store_summary (CamelEwsStore *store, + if (!(fi->flags & CAMEL_FOLDER_SUBSCRIBED) && + e_ews_folder_get_folder_type (folder) != E_EWS_FOLDER_TYPE_MAILBOX) { + if (!hosturl && !username && !esources) { +- CamelSession *session; + CamelSettings *settings; + CamelEwsSettings *ews_settings; +- ESourceRegistry *registry = NULL; + + settings = camel_service_ref_settings (CAMEL_SERVICE (store)); + ews_settings = CAMEL_EWS_SETTINGS (settings); +- session = camel_service_ref_session (CAMEL_SERVICE (store)); +- if (E_IS_MAIL_SESSION (session)) +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); + + hosturl = camel_ews_settings_dup_hosturl (ews_settings); + username = camel_network_settings_dup_user (CAMEL_NETWORK_SETTINGS (ews_settings)); +- esources = e_ews_folder_utils_get_esources (registry, hosturl, username, cancellable, NULL); ++ esources = e_ews_folder_utils_get_esources (hosturl, username, cancellable, NULL); + + g_object_unref (settings); +- g_object_unref (session); + } + + if (e_ews_folder_utils_is_subscribed_as_esource (esources, hosturl, username, fid->id)) +@@ -3711,18 +3703,13 @@ ews_store_subscribe_folder_sync (CamelSubscribable *subscribable, + } + + if (e_ews_folder_get_folder_type (folder) != E_EWS_FOLDER_TYPE_MAILBOX) { +- CamelSession *session; + CamelSettings *settings; + CamelEwsSettings *ews_settings; +- ESourceRegistry *registry = NULL; + + settings = camel_service_ref_settings (CAMEL_SERVICE (ews_store)); + ews_settings = CAMEL_EWS_SETTINGS (settings); +- session = camel_service_ref_session (CAMEL_SERVICE (ews_store)); +- if (E_IS_MAIL_SESSION (session)) +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); + +- res = e_ews_folder_utils_add_as_esource (registry, ++ res = e_ews_folder_utils_add_as_esource (NULL, + camel_ews_settings_get_hosturl (ews_settings), + camel_network_settings_get_user (CAMEL_NETWORK_SETTINGS (ews_settings)), + folder, +@@ -3731,7 +3718,6 @@ ews_store_subscribe_folder_sync (CamelSubscribable *subscribable, + cancellable, + error); + +- g_object_unref (session); + g_object_unref (settings); + } + +@@ -3846,25 +3832,19 @@ ews_store_unsubscribe_folder_sync (CamelSubscribable *subscribable, + } + + if (folder_type != E_EWS_FOLDER_TYPE_MAILBOX) { +- CamelSession *session; + CamelSettings *settings; + CamelEwsSettings *ews_settings; +- ESourceRegistry *registry = NULL; + + settings = camel_service_ref_settings (CAMEL_SERVICE (ews_store)); + ews_settings = CAMEL_EWS_SETTINGS (settings); +- session = camel_service_ref_session (CAMEL_SERVICE (ews_store)); +- if (E_IS_MAIL_SESSION (session)) +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); + +- res = e_ews_folder_utils_remove_as_esource (registry, ++ res = e_ews_folder_utils_remove_as_esource ( + camel_ews_settings_get_hosturl (ews_settings), + camel_network_settings_get_user (CAMEL_NETWORK_SETTINGS (ews_settings)), + fid, + cancellable, + error); + +- g_object_unref (session); + g_object_unref (settings); + } + +@@ -3932,16 +3912,12 @@ camel_ews_store_maybe_disconnect (CamelEwsStore *store, + camel_service_disconnect_sync (service, FALSE, NULL, NULL); + + if (is_auth_failed) { +- CamelSession *session; +- ESourceRegistry *registry = NULL; ++ ESourceRegistry *registry; + + error->domain = CAMEL_SERVICE_ERROR; + error->code = CAMEL_SERVICE_ERROR_CANT_AUTHENTICATE; + +- session = camel_service_ref_session (service); +- +- if (E_IS_MAIL_SESSION (session)) +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); ++ registry = e_source_registry_new_sync (NULL, NULL); + + if (registry) { + ESource *source, *collection = NULL; +@@ -3957,9 +3933,8 @@ camel_ews_store_maybe_disconnect (CamelEwsStore *store, + + g_clear_object (&collection); + g_clear_object (&source); ++ g_clear_object (®istry); + } +- +- g_clear_object (&session); + } + } + +diff --git a/src/EWS/camel/camel-ews-transport.c b/src/EWS/camel/camel-ews-transport.c +index 3c877f6..478dbbd 100644 +--- a/src/EWS/camel/camel-ews-transport.c ++++ b/src/EWS/camel/camel-ews-transport.c +@@ -12,8 +12,6 @@ + + #include + +-#include +- + #include "common/camel-ews-settings.h" + #include "common/e-ews-camel-common.h" + +@@ -31,12 +29,166 @@ struct _CamelEwsTransportPrivate + + G_DEFINE_TYPE_WITH_PRIVATE (CamelEwsTransport, camel_ews_transport, CAMEL_TYPE_TRANSPORT) + ++/* This is copy of e_mail_folder_uri_parse(), to not depend on the evolution code ++ in the library code (and to not bring gtk+ into random processes). */ ++static gboolean ++ews_transport_mail_folder_uri_parse (CamelSession *session, ++ const gchar *folder_uri, ++ CamelStore **out_store, ++ gchar **out_folder_name, ++ GError **error) ++{ ++ CamelURL *url; ++ CamelService *service = NULL; ++ gchar *folder_name = NULL; ++ gboolean success = FALSE; ++ ++ g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE); ++ g_return_val_if_fail (folder_uri != NULL, FALSE); ++ ++ url = camel_url_new (folder_uri, error); ++ if (url == NULL) ++ return FALSE; ++ ++ /* Current URI Format: 'folder://' STORE_UID '/' FOLDER_PATH */ ++ if (g_strcmp0 (url->protocol, "folder") == 0) { ++ ++ if (url->host != NULL) { ++ gchar *uid; ++ ++ if (url->user == NULL || *url->user == '\0') ++ uid = g_strdup (url->host); ++ else ++ uid = g_strconcat ( ++ url->user, "@", url->host, NULL); ++ ++ service = camel_session_ref_service (session, uid); ++ g_free (uid); ++ } ++ ++ if (url->path != NULL && *url->path == '/') ++ folder_name = camel_url_decode_path (url->path + 1); ++ ++ /* This style was used to reference accounts by UID before ++ * CamelServices themselves had UIDs. Some examples are: ++ * ++ * Special cases: ++ * ++ * 'email://local@local/' FOLDER_PATH ++ * 'email://vfolder@local/' FOLDER_PATH ++ * ++ * General case: ++ * ++ * 'email://' ACCOUNT_UID '/' FOLDER_PATH ++ * ++ * Note: ACCOUNT_UID is now equivalent to STORE_UID, and ++ * the STORE_UIDs for the special cases are 'local' ++ * and 'vfolder'. ++ */ ++ } else if (g_strcmp0 (url->protocol, "email") == 0) { ++ gchar *uid = NULL; ++ ++ /* Handle the special cases. */ ++ if (g_strcmp0 (url->host, "local") == 0) { ++ if (g_strcmp0 (url->user, "local") == 0) ++ uid = g_strdup ("local"); ++ if (g_strcmp0 (url->user, "vfolder") == 0) ++ uid = g_strdup ("vfolder"); ++ } ++ ++ /* Handle the general case. */ ++ if (uid == NULL && url->host != NULL) { ++ if (url->user == NULL) ++ uid = g_strdup (url->host); ++ else ++ uid = g_strdup_printf ( ++ "%s@%s", url->user, url->host); ++ } ++ ++ if (uid != NULL) { ++ service = camel_session_ref_service (session, uid); ++ g_free (uid); ++ } ++ ++ if (url->path != NULL && *url->path == '/') ++ folder_name = camel_url_decode_path (url->path + 1); ++ ++ /* CamelFolderInfo URIs used to embed the store's URI, so the ++ * folder name is appended as either a path part or a fragment ++ * part, depending whether the store's URI used the path part. ++ * To determine which it is, you have to check the provider ++ * flags for CAMEL_URL_FRAGMENT_IS_PATH. */ ++ } else { ++ gboolean local_mbox_folder; ++ ++ /* In Evolution 2.x, the local mail store used mbox ++ * format. camel_session_ref_service_by_url() won't ++ * match "mbox:///.../mail/local" folder URIs, since ++ * the local mail store is now Maildir format. Test ++ * for this corner case and work around it. ++ * ++ * The folder path is kept in the fragment part of the ++ * URL which makes it easy to test the filesystem path. ++ * The suffix "evolution/mail/local" should match both ++ * the current XDG-compliant location and the old "dot ++ * folder" location (~/.evolution/mail/local). */ ++ local_mbox_folder = ++ (g_strcmp0 (url->protocol, "mbox") == 0) && ++ (url->path != NULL) && ++ g_str_has_suffix (url->path, "evolution/mail/local"); ++ ++ if (local_mbox_folder) { ++ service = camel_session_ref_service (session, "local"); ++ } else { ++ service = camel_session_ref_service_by_url ( ++ session, url, CAMEL_PROVIDER_STORE); ++ } ++ ++ if (CAMEL_IS_STORE (service)) { ++ CamelProvider *provider; ++ ++ provider = camel_service_get_provider (service); ++ ++ if (provider->url_flags & CAMEL_URL_FRAGMENT_IS_PATH) ++ folder_name = g_strdup (url->fragment); ++ else if (url->path != NULL && *url->path == '/') ++ folder_name = g_strdup (url->path + 1); ++ } ++ } ++ ++ if (CAMEL_IS_STORE (service) && folder_name != NULL) { ++ if (out_store != NULL) ++ *out_store = CAMEL_STORE (g_object_ref (service)); ++ ++ if (out_folder_name != NULL) { ++ *out_folder_name = folder_name; ++ folder_name = NULL; ++ } ++ ++ success = TRUE; ++ } else { ++ g_set_error ( ++ error, CAMEL_FOLDER_ERROR, ++ CAMEL_FOLDER_ERROR_INVALID, ++ _("Invalid folder URI “%s”"), ++ folder_uri); ++ } ++ ++ if (service != NULL) ++ g_object_unref (service); ++ ++ g_free (folder_name); ++ ++ camel_url_free (url); ++ ++ return success; ++} ++ + static gboolean + ews_transport_can_server_side_sent_folder (CamelService *service, + EwsFolderId **folder_id, + GCancellable *cancellable) + { +- CamelSession *session; + ESourceRegistry *registry; + ESource *sibling, *source = NULL; + gboolean is_server_side = FALSE; +@@ -44,21 +196,16 @@ ews_transport_can_server_side_sent_folder (CamelService *service, + g_return_val_if_fail (CAMEL_IS_EWS_TRANSPORT (service), FALSE); + g_return_val_if_fail (folder_id != NULL, FALSE); + +- session = camel_service_ref_session (service); +- if (session && E_IS_MAIL_SESSION (session)) +- registry = g_object_ref (e_mail_session_get_registry (E_MAIL_SESSION (session))); +- else +- registry = e_source_registry_new_sync (cancellable, NULL); +- +- if (!registry) { +- g_clear_object (&session); ++ registry = e_source_registry_new_sync (cancellable, NULL); ++ if (!registry) + return FALSE; +- } + + sibling = e_source_registry_ref_source (registry, camel_service_get_uid (service)); + if (sibling) { ++ CamelSession *session; + GList *sources, *siter; + ++ session = camel_service_ref_session (service); + sources = e_source_registry_list_sources (registry, E_SOURCE_EXTENSION_MAIL_SUBMISSION); + for (siter = sources; siter; siter = siter->next) { + source = siter->data; +@@ -85,7 +232,7 @@ ews_transport_can_server_side_sent_folder (CamelService *service, + by the evolution itself. */ + if (!e_source_mail_submission_get_replies_to_origin_folder (subm_extension) && + e_source_mail_submission_get_sent_folder (subm_extension) && +- e_mail_folder_uri_parse (session, ++ ews_transport_mail_folder_uri_parse (session, + e_source_mail_submission_get_sent_folder (subm_extension), + &store, &folder_name, NULL) & CAMEL_IS_EWS_STORE (store)) { + CamelEwsStore *ews_store = CAMEL_EWS_STORE (store); +@@ -112,10 +259,10 @@ ews_transport_can_server_side_sent_folder (CamelService *service, + + g_list_free_full (sources, g_object_unref); + g_object_unref (sibling); ++ g_clear_object (&session); + } + + g_object_unref (registry); +- g_clear_object (&session); + + return is_server_side; + } +diff --git a/src/EWS/camel/camel-ews-utils.c b/src/EWS/camel/camel-ews-utils.c +index 736efd2..d7097c0 100644 +--- a/src/EWS/camel/camel-ews-utils.c ++++ b/src/EWS/camel/camel-ews-utils.c +@@ -14,9 +14,6 @@ + #include + #include + +-#include +-#include +- + #include "common/camel-ews-settings.h" + #include "common/e-ews-camel-common.h" + #include "common/e-ews-item-change.h" +@@ -1467,23 +1464,12 @@ ESource * + camel_ews_utils_ref_corresponding_source (CamelService *service, + GCancellable *cancellable) + { +- ESourceRegistry *registry = NULL; +- CamelSession *session; ++ ESourceRegistry *registry; + ESource *source = NULL; + + g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL); + +- session = camel_service_ref_session (service); +- if (E_IS_MAIL_SESSION (session)) { +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); +- if (registry) +- g_object_ref (registry); +- } +- +- g_clear_object (&session); +- +- if (!registry) +- registry = e_source_registry_new_sync (cancellable, NULL); ++ registry = e_source_registry_new_sync (cancellable, NULL); + + if (registry) { + source = e_source_registry_ref_source (registry, camel_service_get_uid (service)); +@@ -1566,7 +1552,7 @@ ews_utils_save_category_changes (GHashTable *old_categories, /* gchar *guid ~> C + + evo_labels = g_ptr_array_new_full (5, g_free); + +- settings = e_util_ref_settings ("org.gnome.evolution.mail"); ++ settings = g_settings_new ("org.gnome.evolution.mail"); + strv = g_settings_get_strv (settings, "labels"); + + for (ii = 0; strv && strv[ii]; ii++) { +diff --git a/src/EWS/common/CMakeLists.txt b/src/EWS/common/CMakeLists.txt +index 40ba90f..2622d24 100644 +--- a/src/EWS/common/CMakeLists.txt ++++ b/src/EWS/common/CMakeLists.txt +@@ -54,7 +54,6 @@ target_compile_definitions(evolution-ews PRIVATE + + target_compile_options(evolution-ews PUBLIC + ${CAMEL_CFLAGS} +- ${EVOLUTION_CALENDAR_CFLAGS} + ${LIBEBACKEND_CFLAGS} + ${LIBECAL_CFLAGS} + ${LIBEDATACAL_CFLAGS} +@@ -70,7 +69,6 @@ target_include_directories(evolution-ews PUBLIC + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${CAMEL_INCLUDE_DIRS} +- ${EVOLUTION_CALENDAR_INCLUDE_DIRS} + ${LIBEBACKEND_INCLUDE_DIRS} + ${LIBECAL_INCLUDE_DIRS} + ${LIBEDATACAL_INCLUDE_DIRS} +@@ -80,7 +78,6 @@ target_include_directories(evolution-ews PUBLIC + + target_link_libraries(evolution-ews + ${CAMEL_LDFLAGS} +- ${EVOLUTION_CALENDAR_LDFLAGS} + ${LIBEBACKEND_LDFLAGS} + ${LIBECAL_LDFLAGS} + ${LIBEDATACAL_LDFLAGS} +diff --git a/src/EWS/common/e-ews-calendar-utils.c b/src/EWS/common/e-ews-calendar-utils.c +index 82224b6..f821dc3 100644 +--- a/src/EWS/common/e-ews-calendar-utils.c ++++ b/src/EWS/common/e-ews-calendar-utils.c +@@ -8,7 +8,6 @@ + + #include + #include +-#include + + #include "e-ews-message.h" + #include "ews-errors.h" +@@ -405,6 +404,26 @@ e_ews_cal_utils_prepare_free_busy_request (ESoapMessage *msg, + return TRUE; + } + ++/* This corresponds to calendar_config_get_icaltimezone(), to not depend on the evolution code ++ in the library code (and to not bring gtk+ into random processes). */ ++static ICalTimezone * ++ews_get_configured_icaltimezone (void) ++{ ++ GSettings *settings; ++ gchar *location; ++ ICalTimezone *zone = NULL; ++ ++ settings = g_settings_new ("org.gnome.evolution.calendar"); ++ location = g_settings_get_string (settings, "timezone"); ++ if (location) { ++ zone = i_cal_timezone_get_builtin_timezone (location); ++ ++ g_free (location); ++ } ++ g_object_unref (settings); ++ return zone; ++} ++ + void + e_ews_cal_utils_set_time (ESoapMessage *msg, + const gchar *name, +@@ -444,7 +463,7 @@ e_ews_cal_utils_set_time (ESoapMessage *msg, + if (i_cal_time_is_date (tt)) { + ICalTimezone *cfg_zone; + +- cfg_zone = calendar_config_get_icaltimezone (); ++ cfg_zone = ews_get_configured_icaltimezone (); + local_tt = i_cal_time_new_from_timet_with_zone (i_cal_time_as_timet_with_zone (tt, cfg_zone), FALSE, i_cal_timezone_get_utc_timezone ()); + tt = local_tt; + } +diff --git a/src/EWS/common/e-ews-folder.c b/src/EWS/common/e-ews-folder.c +index aeaf370..04e6a1a 100644 +--- a/src/EWS/common/e-ews-folder.c ++++ b/src/EWS/common/e-ews-folder.c +@@ -846,8 +846,7 @@ e_ews_folder_utils_add_as_esource (ESourceRegistry *pregistry, + } + + gboolean +-e_ews_folder_utils_remove_as_esource (ESourceRegistry *pregistry, +- const gchar *master_hosturl, ++e_ews_folder_utils_remove_as_esource (const gchar *master_hosturl, + const gchar *master_username, + const gchar *folder_id, + GCancellable *cancellable, +@@ -858,12 +857,9 @@ e_ews_folder_utils_remove_as_esource (ESourceRegistry *pregistry, + GList *sources; + gboolean res = TRUE; + +- registry = pregistry; +- if (!registry) { +- registry = e_source_registry_new_sync (cancellable, perror); +- if (!registry) +- return FALSE; +- } ++ registry = e_source_registry_new_sync (cancellable, perror); ++ if (!registry) ++ return FALSE; + + sources = e_source_registry_list_sources (registry, NULL); + source = e_ews_folder_utils_get_source_for_folder (sources, master_hosturl, master_username, folder_id); +@@ -876,15 +872,13 @@ e_ews_folder_utils_remove_as_esource (ESourceRegistry *pregistry, + } + + g_list_free_full (sources, g_object_unref); +- if (!pregistry) +- g_object_unref (registry); ++ g_object_unref (registry); + + return res; + } + + GList * +-e_ews_folder_utils_get_esources (ESourceRegistry *pregistry, +- const gchar *master_hosturl, ++e_ews_folder_utils_get_esources (const gchar *master_hosturl, + const gchar *master_username, + GCancellable *cancellable, + GError **perror) +@@ -892,19 +886,15 @@ e_ews_folder_utils_get_esources (ESourceRegistry *pregistry, + ESourceRegistry *registry; + GList *all_sources, *esources = NULL; + +- registry = pregistry; +- if (!registry) { +- registry = e_source_registry_new_sync (cancellable, perror); +- if (!registry) +- return NULL; +- } ++ registry = e_source_registry_new_sync (cancellable, perror); ++ if (!registry) ++ return NULL; + + all_sources = e_source_registry_list_sources (registry, NULL); + esources = e_ews_folder_utils_filter_sources_for_account (all_sources, master_hosturl, master_username); + + g_list_free_full (all_sources, g_object_unref); +- if (!pregistry) +- g_object_unref (registry); ++ g_object_unref (registry); + + return esources; + } +diff --git a/src/EWS/common/e-ews-folder.h b/src/EWS/common/e-ews-folder.h +index dc1bf55..dbde4d2 100644 +--- a/src/EWS/common/e-ews-folder.h ++++ b/src/EWS/common/e-ews-folder.h +@@ -108,14 +108,12 @@ gboolean e_ews_folder_utils_add_as_esource (ESourceRegistry *pregistry, + gint color_seed, + GCancellable *cancellable, + GError **perror); +-gboolean e_ews_folder_utils_remove_as_esource (ESourceRegistry *pregistry, +- const gchar *master_hosturl, ++gboolean e_ews_folder_utils_remove_as_esource (const gchar *master_hosturl, + const gchar *master_username, + const gchar *folder_id, + GCancellable *cancellable, + GError **perror); +-GList * e_ews_folder_utils_get_esources (ESourceRegistry *pregistry, +- const gchar *master_hosturl, ++GList * e_ews_folder_utils_get_esources (const gchar *master_hosturl, + const gchar *master_username, + GCancellable *cancellable, + GError **perror); +diff --git a/src/Microsoft365/camel/CMakeLists.txt b/src/Microsoft365/camel/CMakeLists.txt +index 928b837..9cc8846 100644 +--- a/src/Microsoft365/camel/CMakeLists.txt ++++ b/src/Microsoft365/camel/CMakeLists.txt +@@ -39,8 +39,6 @@ target_compile_definitions(camelmicrosoft365 PRIVATE + + target_compile_options(camelmicrosoft365 PUBLIC + ${CAMEL_CFLAGS} +- ${EVOLUTION_SHELL_CFLAGS} +- ${EVOLUTION_MAIL_CFLAGS} + ${LIBEDATASERVER_CFLAGS} + ${LIBECAL_CFLAGS} + ${SOUP_CFLAGS} +@@ -53,8 +51,6 @@ target_include_directories(camelmicrosoft365 PUBLIC + ${CMAKE_SOURCE_DIR}/src/Microsoft365 + ${CMAKE_CURRENT_BINARY_DIR} + ${CAMEL_INCLUDE_DIRS} +- ${EVOLUTION_SHELL_INCLUDE_DIRS} +- ${EVOLUTION_MAIL_INCLUDE_DIRS} + ${LIBEDATASERVER_INCLUDE_DIRS} + ${LIBECAL_INCLUDE_DIRS} + ${SOUP_INCLUDE_DIRS} +@@ -63,8 +59,6 @@ target_include_directories(camelmicrosoft365 PUBLIC + target_link_libraries(camelmicrosoft365 + ${DEPENDENCIES} + ${CAMEL_LDFLAGS} +- ${EVOLUTION_SHELL_LDFLAGS} +- ${EVOLUTION_MAIL_LDFLAGS} + ${LIBEDATASERVER_LDFLAGS} + ${LIBECAL_LDFLAGS} + ${SOUP_LDFLAGS} +diff --git a/src/Microsoft365/camel/camel-m365-store.c b/src/Microsoft365/camel/camel-m365-store.c +index a0f3f26..3537691 100644 +--- a/src/Microsoft365/camel/camel-m365-store.c ++++ b/src/Microsoft365/camel/camel-m365-store.c +@@ -9,9 +9,6 @@ + #include + #include + +-#include +-#include +- + #include "common/camel-m365-settings.h" + #include "common/e-m365-connection.h" + #include "camel-m365-folder.h" +@@ -311,7 +308,7 @@ m365_store_save_category_changes (GHashTable *old_categories, /* gchar *id ~> Ca + + evo_labels = g_ptr_array_new_full (5, g_free); + +- settings = e_util_ref_settings ("org.gnome.evolution.mail"); ++ settings = g_settings_new ("org.gnome.evolution.mail"); + strv = g_settings_get_strv (settings, "labels"); + + for (ii = 0; strv && strv[ii]; ii++) { +@@ -1810,7 +1807,6 @@ camel_m365_store_maybe_disconnect (CamelM365Store *m365_store, + return; + + if (g_error_matches (error, SOUP_HTTP_ERROR, SOUP_STATUS_UNAUTHORIZED)) { +- CamelSession *session; + ESourceRegistry *registry = NULL; + + camel_service_disconnect_sync (service, FALSE, NULL, NULL); +@@ -1818,10 +1814,7 @@ camel_m365_store_maybe_disconnect (CamelM365Store *m365_store, + error->domain = CAMEL_SERVICE_ERROR; + error->code = CAMEL_SERVICE_ERROR_CANT_AUTHENTICATE; + +- session = camel_service_ref_session (service); +- +- if (E_IS_MAIL_SESSION (session)) +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); ++ registry = e_source_registry_new_sync (NULL, NULL); + + if (registry) { + ESource *source, *collection = NULL; +@@ -1839,7 +1832,7 @@ camel_m365_store_maybe_disconnect (CamelM365Store *m365_store, + g_clear_object (&source); + } + +- g_clear_object (&session); ++ g_clear_object (®istry); + } + } + +diff --git a/src/Microsoft365/camel/camel-m365-transport.c b/src/Microsoft365/camel/camel-m365-transport.c +index fb12f41..d234f51 100644 +--- a/src/Microsoft365/camel/camel-m365-transport.c ++++ b/src/Microsoft365/camel/camel-m365-transport.c +@@ -10,8 +10,6 @@ + + #include + +-#include +- + #include "common/camel-m365-settings.h" + #include "common/e-m365-connection.h" + #include "camel-m365-store.h" +@@ -30,34 +28,183 @@ struct _CamelM365TransportPrivate + + G_DEFINE_TYPE_WITH_PRIVATE (CamelM365Transport, camel_m365_transport, CAMEL_TYPE_TRANSPORT) + ++/* This is copy of e_mail_folder_uri_parse(), to not depend on the evolution code ++ in the library code (and to not bring gtk+ into random processes). */ ++static gboolean ++m365_transport_mail_folder_uri_parse (CamelSession *session, ++ const gchar *folder_uri, ++ CamelStore **out_store, ++ gchar **out_folder_name, ++ GError **error) ++{ ++ CamelURL *url; ++ CamelService *service = NULL; ++ gchar *folder_name = NULL; ++ gboolean success = FALSE; ++ ++ g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE); ++ g_return_val_if_fail (folder_uri != NULL, FALSE); ++ ++ url = camel_url_new (folder_uri, error); ++ if (url == NULL) ++ return FALSE; ++ ++ /* Current URI Format: 'folder://' STORE_UID '/' FOLDER_PATH */ ++ if (g_strcmp0 (url->protocol, "folder") == 0) { ++ ++ if (url->host != NULL) { ++ gchar *uid; ++ ++ if (url->user == NULL || *url->user == '\0') ++ uid = g_strdup (url->host); ++ else ++ uid = g_strconcat ( ++ url->user, "@", url->host, NULL); ++ ++ service = camel_session_ref_service (session, uid); ++ g_free (uid); ++ } ++ ++ if (url->path != NULL && *url->path == '/') ++ folder_name = camel_url_decode_path (url->path + 1); ++ ++ /* This style was used to reference accounts by UID before ++ * CamelServices themselves had UIDs. Some examples are: ++ * ++ * Special cases: ++ * ++ * 'email://local@local/' FOLDER_PATH ++ * 'email://vfolder@local/' FOLDER_PATH ++ * ++ * General case: ++ * ++ * 'email://' ACCOUNT_UID '/' FOLDER_PATH ++ * ++ * Note: ACCOUNT_UID is now equivalent to STORE_UID, and ++ * the STORE_UIDs for the special cases are 'local' ++ * and 'vfolder'. ++ */ ++ } else if (g_strcmp0 (url->protocol, "email") == 0) { ++ gchar *uid = NULL; ++ ++ /* Handle the special cases. */ ++ if (g_strcmp0 (url->host, "local") == 0) { ++ if (g_strcmp0 (url->user, "local") == 0) ++ uid = g_strdup ("local"); ++ if (g_strcmp0 (url->user, "vfolder") == 0) ++ uid = g_strdup ("vfolder"); ++ } ++ ++ /* Handle the general case. */ ++ if (uid == NULL && url->host != NULL) { ++ if (url->user == NULL) ++ uid = g_strdup (url->host); ++ else ++ uid = g_strdup_printf ( ++ "%s@%s", url->user, url->host); ++ } ++ ++ if (uid != NULL) { ++ service = camel_session_ref_service (session, uid); ++ g_free (uid); ++ } ++ ++ if (url->path != NULL && *url->path == '/') ++ folder_name = camel_url_decode_path (url->path + 1); ++ ++ /* CamelFolderInfo URIs used to embed the store's URI, so the ++ * folder name is appended as either a path part or a fragment ++ * part, depending whether the store's URI used the path part. ++ * To determine which it is, you have to check the provider ++ * flags for CAMEL_URL_FRAGMENT_IS_PATH. */ ++ } else { ++ gboolean local_mbox_folder; ++ ++ /* In Evolution 2.x, the local mail store used mbox ++ * format. camel_session_ref_service_by_url() won't ++ * match "mbox:///.../mail/local" folder URIs, since ++ * the local mail store is now Maildir format. Test ++ * for this corner case and work around it. ++ * ++ * The folder path is kept in the fragment part of the ++ * URL which makes it easy to test the filesystem path. ++ * The suffix "evolution/mail/local" should match both ++ * the current XDG-compliant location and the old "dot ++ * folder" location (~/.evolution/mail/local). */ ++ local_mbox_folder = ++ (g_strcmp0 (url->protocol, "mbox") == 0) && ++ (url->path != NULL) && ++ g_str_has_suffix (url->path, "evolution/mail/local"); ++ ++ if (local_mbox_folder) { ++ service = camel_session_ref_service (session, "local"); ++ } else { ++ service = camel_session_ref_service_by_url ( ++ session, url, CAMEL_PROVIDER_STORE); ++ } ++ ++ if (CAMEL_IS_STORE (service)) { ++ CamelProvider *provider; ++ ++ provider = camel_service_get_provider (service); ++ ++ if (provider->url_flags & CAMEL_URL_FRAGMENT_IS_PATH) ++ folder_name = g_strdup (url->fragment); ++ else if (url->path != NULL && *url->path == '/') ++ folder_name = g_strdup (url->path + 1); ++ } ++ } ++ ++ if (CAMEL_IS_STORE (service) && folder_name != NULL) { ++ if (out_store != NULL) ++ *out_store = CAMEL_STORE (g_object_ref (service)); ++ ++ if (out_folder_name != NULL) { ++ *out_folder_name = folder_name; ++ folder_name = NULL; ++ } ++ ++ success = TRUE; ++ } else { ++ g_set_error ( ++ error, CAMEL_FOLDER_ERROR, ++ CAMEL_FOLDER_ERROR_INVALID, ++ _("Invalid folder URI “%s”"), ++ folder_uri); ++ } ++ ++ if (service != NULL) ++ g_object_unref (service); ++ ++ g_free (folder_name); ++ ++ camel_url_free (url); ++ ++ return success; ++} ++ + static gboolean + m365_transport_is_server_side_sent_folder (CamelService *service, + GCancellable *cancellable) + { +- CamelSession *session; + ESourceRegistry *registry; + ESource *sibling, *source = NULL; + gboolean is_server_side = FALSE; + + g_return_val_if_fail (CAMEL_IS_M365_TRANSPORT (service), FALSE); + +- session = camel_service_ref_session (service); +- +- if (session && E_IS_MAIL_SESSION (session)) +- registry = g_object_ref (e_mail_session_get_registry (E_MAIL_SESSION (session))); +- else +- registry = e_source_registry_new_sync (cancellable, NULL); ++ registry = e_source_registry_new_sync (cancellable, NULL); + +- if (!registry) { +- g_clear_object (&session); ++ if (!registry) + return FALSE; +- } + + sibling = e_source_registry_ref_source (registry, camel_service_get_uid (service)); + + if (sibling) { ++ CamelSession *session; + GList *sources, *siter; + ++ session = camel_service_ref_session (service); + sources = e_source_registry_list_sources (registry, E_SOURCE_EXTENSION_MAIL_SUBMISSION); + + for (siter = sources; siter; siter = siter->next) { +@@ -85,7 +232,7 @@ m365_transport_is_server_side_sent_folder (CamelService *service, + by the evolution itself. */ + if (!e_source_mail_submission_get_replies_to_origin_folder (subm_extension) && + e_source_mail_submission_get_sent_folder (subm_extension) && +- e_mail_folder_uri_parse (session, ++ m365_transport_mail_folder_uri_parse (session, + e_source_mail_submission_get_sent_folder (subm_extension), + &store, &folder_name, NULL) && CAMEL_IS_M365_STORE (store)) { + CamelM365Store *m365_store = CAMEL_M365_STORE (store); +@@ -114,10 +261,10 @@ m365_transport_is_server_side_sent_folder (CamelService *service, + + g_list_free_full (sources, g_object_unref); + g_object_unref (sibling); ++ g_clear_object (&session); + } + + g_object_unref (registry); +- g_clear_object (&session); + + return is_server_side; + } +diff --git a/src/Microsoft365/camel/camel-m365-utils.c b/src/Microsoft365/camel/camel-m365-utils.c +index 9d49669..ebe17e8 100644 +--- a/src/Microsoft365/camel/camel-m365-utils.c ++++ b/src/Microsoft365/camel/camel-m365-utils.c +@@ -6,8 +6,6 @@ + + #include "evolution-ews-config.h" + +-#include +- + #include "camel-m365-utils.h" + + /* Unref with g_object_unref() when done with it */ +@@ -15,23 +13,12 @@ static ESource * + camel_m365_utils_ref_corresponding_source (CamelService *service, + GCancellable *cancellable) + { +- ESourceRegistry *registry = NULL; +- CamelSession *session; ++ ESourceRegistry *registry; + ESource *source = NULL; + + g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL); + +- session = camel_service_ref_session (service); +- if (E_IS_MAIL_SESSION (session)) { +- registry = e_mail_session_get_registry (E_MAIL_SESSION (session)); +- if (registry) +- g_object_ref (registry); +- } +- +- g_clear_object (&session); +- +- if (!registry) +- registry = e_source_registry_new_sync (cancellable, NULL); ++ registry = e_source_registry_new_sync (cancellable, NULL); + + if (registry) { + source = e_source_registry_ref_source (registry, camel_service_get_uid (service)); diff -Nru evolution-ews-3.44.0/debian/patches/series evolution-ews-3.44.1/debian/patches/series --- evolution-ews-3.44.0/debian/patches/series 2022-03-18 12:38:44.000000000 +0000 +++ evolution-ews-3.44.1/debian/patches/series 2022-04-29 19:38:36.000000000 +0000 @@ -0,0 +1 @@ +build-Limit-which-parts-link-to-the-evolution-libraries-a.patch diff -Nru evolution-ews-3.44.0/NEWS evolution-ews-3.44.1/NEWS --- evolution-ews-3.44.0/NEWS 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/NEWS 2022-04-22 06:04:11.000000000 +0000 @@ -1,3 +1,15 @@ +Evolution-EWS 3.44.1 2022-04-22 +------------------------------- + +Bug Fixes: + I#178 - Correct display of folder size + +Miscellaneous: + Address some of the static analyzers warnings + +Translations: + Nathan Follens (nl) + Evolution-EWS 3.44.0 2022-03-18 ------------------------------- diff -Nru evolution-ews-3.44.0/po/nl.po evolution-ews-3.44.1/po/nl.po --- evolution-ews-3.44.0/po/nl.po 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/po/nl.po 2022-04-22 06:04:11.000000000 +0000 @@ -1,14 +1,14 @@ # Dutch translation for evolution-ews. # Copyright (C) 2019 evolution-ews's COPYRIGHT HOLDER # This file is distributed under the same license as the evolution-ews package. -# Nathan Follens , 2019-2021. +# Nathan Follens , 2019-2022. # msgid "" msgstr "" "Project-Id-Version: evolution-ews master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/evolution-ews/issues\n" -"POT-Creation-Date: 2021-06-09 16:57+0000\n" -"PO-Revision-Date: 2021-09-07 21:20+0200\n" +"POT-Creation-Date: 2022-03-18 12:54+0000\n" +"PO-Revision-Date: 2022-03-25 19:51+0100\n" "Last-Translator: Nathan Follens \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -16,11 +16,11 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0\n" +"X-Generator: Poedit 3.0.1\n" #: ../org.gnome.Evolution-ews.metainfo.xml.in.h:1 #: ../src/EWS/camel/camel-ews-provider.c:68 -#: ../src/EWS/evolution/e-ews-config-lookup.c:240 +#: ../src/EWS/evolution/e-ews-config-lookup.c:222 #: ../src/EWS/evolution/e-mail-config-ews-autodiscover.c:119 msgid "Exchange Web Services" msgstr "Exchange-webdiensten" @@ -30,18 +30,22 @@ msgid "For accessing Exchange servers using Web Services" msgstr "Voor toegang tot Exchange-servers met webdiensten" -#: ../src/EWS/addressbook/e-book-backend-ews.c:3564 +#: ../src/EWS/addressbook/e-book-backend-ews.c:2894 +msgid "Fetching contact photos…" +msgstr "Contactfoto’s ophalen…" + +#: ../src/EWS/addressbook/e-book-backend-ews.c:4087 msgid "Failed to update GAL:" msgstr "Bijwerken van GAL mislukt:" -#: ../src/EWS/addressbook/e-book-backend-ews.c:3729 +#: ../src/EWS/addressbook/e-book-backend-ews.c:4252 msgid "" "Cannot save contact list, it’s only supported on EWS Server 2010 or later" msgstr "" "Kan contactlijst niet opslaan, dit wordt enkel ondersteund door EWS Server " "2010 of recenter" -#: ../src/EWS/addressbook/e-book-backend-ews.c:3822 +#: ../src/EWS/addressbook/e-book-backend-ews.c:4350 msgid "Failed to set contact photo:" msgstr "Instellen van contactfoto mislukt:" @@ -496,25 +500,25 @@ "dagelijks, wekelijks, maandelijks of jaarlijks voorkomen zonder " "uitzonderingen en met begindatum." -#: ../src/EWS/common/e-ews-camel-common.c:392 +#: ../src/EWS/common/e-ews-camel-common.c:388 #, c-format msgid "CreateItem call failed to return ID for new message" msgstr "CreateItem-oproep gaf geen ID voor nieuw bericht weer" -#: ../src/EWS/common/e-ews-connection.c:811 +#: ../src/EWS/common/e-ews-connection.c:828 msgid "Operation Cancelled" msgstr "Bewerking geannuleerd" -#: ../src/EWS/common/e-ews-connection.c:981 +#: ../src/EWS/common/e-ews-connection.c:1001 msgid "Authentication failed" msgstr "Authenticatie mislukt" -#: ../src/EWS/common/e-ews-connection.c:1003 +#: ../src/EWS/common/e-ews-connection.c:1028 #, c-format msgid "No response: %s" msgstr "Geen antwoord: %s" -#: ../src/EWS/common/e-ews-connection.c:1066 +#: ../src/EWS/common/e-ews-connection.c:1096 #, c-format msgid "Exchange server is busy, waiting to retry (%d:%02d minute)" msgid_plural "Exchange server is busy, waiting to retry (%d:%02d minutes)" @@ -523,7 +527,7 @@ msgstr[1] "" "Exchange-server is bezig, wachten om opnieuw te proberen (%d:%02d minuten)" -#: ../src/EWS/common/e-ews-connection.c:1072 +#: ../src/EWS/common/e-ews-connection.c:1102 #, c-format msgid "Exchange server is busy, waiting to retry (%d second)" msgid_plural "Exchange server is busy, waiting to retry (%d seconds)" @@ -532,57 +536,57 @@ msgstr[1] "" "Exchange-server is bezig, wachten om opnieuw te proberen (%d seconden)" -#: ../src/EWS/common/e-ews-connection.c:3215 +#: ../src/EWS/common/e-ews-connection.c:3236 #, c-format msgid "Failed to parse autodiscover response XML" msgstr "Ontleden van autodiscover-respons-XML is mislukt" -#: ../src/EWS/common/e-ews-connection.c:3222 +#: ../src/EWS/common/e-ews-connection.c:3243 #, c-format msgid "Failed to find element" msgstr "Kon -element niet vinden" -#: ../src/EWS/common/e-ews-connection.c:3233 +#: ../src/EWS/common/e-ews-connection.c:3254 #, c-format msgid "Failed to find element" msgstr "Kon -element niet vinden" -#: ../src/EWS/common/e-ews-connection.c:3244 +#: ../src/EWS/common/e-ews-connection.c:3265 #, c-format msgid "Failed to find element" msgstr "Kon -element niet vinden" -#: ../src/EWS/common/e-ews-connection.c:3290 +#: ../src/EWS/common/e-ews-connection.c:3311 #, c-format msgid "Failed to find in autodiscover response" msgstr "Kon niet vinden in autodiscover-respons" -#: ../src/EWS/common/e-ews-connection.c:3476 +#: ../src/EWS/common/e-ews-connection.c:3497 msgid "URL cannot be NULL" msgstr "URL kan niet NULL zijn" -#: ../src/EWS/common/e-ews-connection.c:3484 +#: ../src/EWS/common/e-ews-connection.c:3505 #, c-format msgid "URL “%s” is not valid" msgstr "URL ‘%s’ is ongeldig" -#: ../src/EWS/common/e-ews-connection.c:3781 +#: ../src/EWS/common/e-ews-connection.c:3802 msgid "Email address is missing a domain part" msgstr "Domein ontbreekt in e-mailadres" -#: ../src/EWS/common/e-ews-connection.c:4090 +#: ../src/EWS/common/e-ews-connection.c:4111 msgid "Failed to parse oab XML" msgstr "Ontleden van oab-XLM mislukt" -#: ../src/EWS/common/e-ews-connection.c:4098 +#: ../src/EWS/common/e-ews-connection.c:4119 msgid "Failed to find element\n" msgstr "Kan -element niet vinden\n" -#: ../src/EWS/common/e-ews-connection.c:5387 +#: ../src/EWS/common/e-ews-connection.c:5408 msgid "No items found" msgstr "Geen items gevonden" -#: ../src/EWS/common/e-ews-connection.c:11838 +#: ../src/EWS/common/e-ews-connection.c:11873 msgid "Requires at least Microsoft Exchange 2007 SP1 server" msgstr "Vereist minstens Microsoft Exchange 2007 SP1-server" @@ -596,7 +600,7 @@ msgstr "Wachtwoord verlopen." #: ../src/EWS/common/e-ews-connection-utils.c:422 -#: ../src/Microsoft365/common/e-m365-connection.c:236 +#: ../src/Microsoft365/common/e-m365-connection.c:237 msgid "Unknown error" msgstr "Onbekende fout" @@ -640,26 +644,26 @@ msgid "Tries to look up for user photo" msgstr "Probeert gebruikersfoto’s op te zoeken" -#: ../src/EWS/evolution/e-ews-config-lookup.c:181 +#: ../src/EWS/evolution/e-ews-config-lookup.c:182 msgid "Exchange Web Services autodiscovery" msgstr "Exchange-webdiensten automatisch ontdekken" -#: ../src/EWS/evolution/e-ews-config-lookup.c:224 +#: ../src/EWS/evolution/e-ews-config-lookup.c:207 #, c-format msgid "User: %s" msgstr "Gebruiker: %s" -#: ../src/EWS/evolution/e-ews-config-lookup.c:229 +#: ../src/EWS/evolution/e-ews-config-lookup.c:212 #, c-format msgid "Host URL: %s" msgstr "Host-URL: %s" -#: ../src/EWS/evolution/e-ews-config-lookup.c:234 +#: ../src/EWS/evolution/e-ews-config-lookup.c:216 #, c-format msgid "OAB URL: %s" msgstr "OAB-URL: %s" -#: ../src/EWS/evolution/e-ews-config-lookup.c:311 +#: ../src/EWS/evolution/e-ews-config-lookup.c:313 #, c-format msgid "Requires password to continue." msgstr "Vereist wachtwoord om verder te gaan." @@ -678,61 +682,61 @@ msgid "Unable to retrieve folder size information" msgstr "Kan informatie over mapgrootte niet verkrijgen" -#: ../src/EWS/evolution/e-ews-config-utils.c:742 +#: ../src/EWS/evolution/e-ews-config-utils.c:744 msgid "Folder Sizes" msgstr "Mapgroottes" -#: ../src/EWS/evolution/e-ews-config-utils.c:745 +#: ../src/EWS/evolution/e-ews-config-utils.c:747 msgid "_Close" msgstr "Sl_uiten" -#: ../src/EWS/evolution/e-ews-config-utils.c:759 +#: ../src/EWS/evolution/e-ews-config-utils.c:761 msgid "Fetching folder list…" msgstr "Maplijst ophalen…" -#: ../src/EWS/evolution/e-ews-config-utils.c:822 +#: ../src/EWS/evolution/e-ews-config-utils.c:824 #: ../src/EWS/evolution/e-ews-subscribe-foreign-folder.c:646 msgid "Subscribe to folder of other EWS user…" msgstr "Abonneren op map van andere EWS-gebruiker…" -#: ../src/EWS/evolution/e-ews-config-utils.c:1009 +#: ../src/EWS/evolution/e-ews-config-utils.c:1011 #, c-format msgid "Cannot edit permissions of folder “%s”, choose other folder." msgstr "Kan rechten van map ‘%s’ niet bewerken, kies een andere map." -#: ../src/EWS/evolution/e-ews-config-utils.c:1088 +#: ../src/EWS/evolution/e-ews-config-utils.c:1090 msgid "Folder Sizes…" msgstr "Mapgroottes…" -#: ../src/EWS/evolution/e-ews-config-utils.c:1095 +#: ../src/EWS/evolution/e-ews-config-utils.c:1097 msgid "Subscribe to folder of other user…" msgstr "Abonneren op map van andere gebruiker…" -#: ../src/EWS/evolution/e-ews-config-utils.c:1104 -#: ../src/EWS/evolution/e-ews-config-utils.c:1440 -#: ../src/EWS/evolution/e-ews-config-utils.c:1478 -#: ../src/EWS/evolution/e-ews-config-utils.c:1516 -#: ../src/EWS/evolution/e-ews-config-utils.c:1554 +#: ../src/EWS/evolution/e-ews-config-utils.c:1106 +#: ../src/EWS/evolution/e-ews-config-utils.c:1442 +#: ../src/EWS/evolution/e-ews-config-utils.c:1480 +#: ../src/EWS/evolution/e-ews-config-utils.c:1518 +#: ../src/EWS/evolution/e-ews-config-utils.c:1556 msgid "Permissions…" msgstr "Rechten…" -#: ../src/EWS/evolution/e-ews-config-utils.c:1106 +#: ../src/EWS/evolution/e-ews-config-utils.c:1108 msgid "Edit EWS folder permissions" msgstr "EWS-maprechten bewerken" -#: ../src/EWS/evolution/e-ews-config-utils.c:1442 +#: ../src/EWS/evolution/e-ews-config-utils.c:1444 msgid "Edit EWS calendar permissions" msgstr "EWS-agendarechten bewerken" -#: ../src/EWS/evolution/e-ews-config-utils.c:1480 +#: ../src/EWS/evolution/e-ews-config-utils.c:1482 msgid "Edit EWS tasks permissions" msgstr "EWS-takenrechten bewerken" -#: ../src/EWS/evolution/e-ews-config-utils.c:1518 +#: ../src/EWS/evolution/e-ews-config-utils.c:1520 msgid "Edit EWS memos permissions" msgstr "EWS-memorechten bewerken" -#: ../src/EWS/evolution/e-ews-config-utils.c:1556 +#: ../src/EWS/evolution/e-ews-config-utils.c:1558 msgid "Edit EWS contacts permissions" msgstr "EWS-contactrechten bewerken" @@ -1573,12 +1577,12 @@ msgid "Data source “%s” does not represent an Exchange Web Services folder" msgstr "Gegevensbron ‘%s’ stelt geen Exchange-webdienstenmap voor" -#: ../src/Microsoft365/addressbook/e-book-backend-m365.c:1426 +#: ../src/Microsoft365/addressbook/e-book-backend-m365.c:1427 #: ../src/Microsoft365/calendar/e-cal-backend-m365.c:2941 msgid "Folder ID is not set" msgstr "Map-ID is niet ingesteld" -#: ../src/Microsoft365/addressbook/e-book-backend-m365.c:1667 +#: ../src/Microsoft365/addressbook/e-book-backend-m365.c:1668 msgid "Cannot save contact list into a Microsoft 365 address book" msgstr "Kan contactenlijst niet opslaan in een Microsoft 365-adresboek" @@ -1681,7 +1685,7 @@ msgstr "E-mails ontvangen via Microsoft 365" #: ../src/Microsoft365/camel/camel-m365-store.c:201 -#: ../src/Microsoft365/common/e-m365-connection.c:1521 +#: ../src/Microsoft365/common/e-m365-connection.c:1527 #, c-format msgid "Malformed URI: “%s”" msgstr "Misvormde URI: ‘%s’" @@ -1737,7 +1741,7 @@ msgid "Microsoft365" msgstr "Microsoft365" -#: ../src/Microsoft365/common/e-m365-connection.c:1179 +#: ../src/Microsoft365/common/e-m365-connection.c:1181 #, c-format msgid "Microsoft 365 server is busy, waiting to retry (%d:%02d minute)" msgid_plural "Microsoft 365 server is busy, waiting to retry (%d:%02d minutes)" @@ -1748,7 +1752,7 @@ "Microsoft 365-server is bezig, wachten om opnieuw te proberen (%d:%02d " "minuten)" -#: ../src/Microsoft365/common/e-m365-connection.c:1185 +#: ../src/Microsoft365/common/e-m365-connection.c:1187 #, c-format msgid "Microsoft 365 server is busy, waiting to retry (%d second)" msgid_plural "Microsoft 365 server is busy, waiting to retry (%d seconds)" @@ -1757,7 +1761,7 @@ msgstr[1] "" "Microsoft 365-server is bezig, wachten om opnieuw te proberen (%d seconden)" -#: ../src/Microsoft365/common/e-m365-connection.c:2037 +#: ../src/Microsoft365/common/e-m365-connection.c:2043 msgid "Failed to parse own Json data" msgstr "Ontleden van eigen JSON-gegevens is mislukt" diff -Nru evolution-ews-3.44.0/src/EWS/addressbook/e-book-backend-ews.c evolution-ews-3.44.1/src/EWS/addressbook/e-book-backend-ews.c --- evolution-ews-3.44.0/src/EWS/addressbook/e-book-backend-ews.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/addressbook/e-book-backend-ews.c 2022-04-22 06:04:11.000000000 +0000 @@ -1635,6 +1635,8 @@ e_soap_message_end_element (message); } e_ews_message_end_set_indexed_item_field (message, delete_field); + + g_free (fielduri); } static void diff -Nru evolution-ews-3.44.0/src/EWS/addressbook/ews-oab-decoder.c evolution-ews-3.44.1/src/EWS/addressbook/ews-oab-decoder.c --- evolution-ews-3.44.0/src/EWS/addressbook/ews-oab-decoder.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/addressbook/ews-oab-decoder.c 2022-04-22 06:04:11.000000000 +0000 @@ -1071,7 +1071,7 @@ ews_oab_decoder_get_oab_prop_string (EwsOabDecoder *eod, GError **error) { - GString *str = g_string_new (NULL); + GString *str; GSList *l; if (!eod->priv->oab_props) { @@ -1081,6 +1081,8 @@ return NULL; } + str = g_string_new (NULL); + /* Ideally i would liked to store int as int instead of converting to * string, but sqlite db doesn't yet support storing keys as blob. */ for (l = eod->priv->oab_props; l != NULL; l = g_slist_next (l)) { diff -Nru evolution-ews-3.44.0/src/EWS/calendar/e-cal-backend-ews-utils.c evolution-ews-3.44.1/src/EWS/calendar/e-cal-backend-ews-utils.c --- evolution-ews-3.44.0/src/EWS/calendar/e-cal-backend-ews-utils.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/calendar/e-cal-backend-ews-utils.c 2022-04-22 06:04:11.000000000 +0000 @@ -1004,6 +1004,7 @@ attachment_id = g_strdup (dirs[n - 1]); g_strfreev (dirs); + g_free (filepath); return attachment_id; } diff -Nru evolution-ews-3.44.0/src/EWS/camel/camel-ews-folder.c evolution-ews-3.44.1/src/EWS/camel/camel-ews-folder.c --- evolution-ews-3.44.0/src/EWS/camel/camel-ews-folder.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/camel/camel-ews-folder.c 2022-04-22 06:04:11.000000000 +0000 @@ -183,10 +183,10 @@ cdc, path, g_checksum_get_string (sha), error); g_checksum_free (sha); - if (base_stream != NULL) + if (base_stream != NULL) { stream = camel_stream_new (base_stream); - - g_object_unref (base_stream); + g_object_unref (base_stream); + } return stream; } diff -Nru evolution-ews-3.44.0/src/EWS/common/e-ews-calendar-utils.c evolution-ews-3.44.1/src/EWS/common/e-ews-calendar-utils.c --- evolution-ews-3.44.0/src/EWS/common/e-ews-calendar-utils.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-ews-calendar-utils.c 2022-04-22 06:04:11.000000000 +0000 @@ -1778,7 +1778,7 @@ } if (usable) { - if (recur_start && !i_cal_time_is_null_time (recur_start) && i_cal_time_is_valid_time (recur_start)) { + if (!i_cal_time_is_null_time (recur_start) && i_cal_time_is_valid_time (recur_start)) { ICalProperty *prop; i_cal_component_set_dtstart (comp, recur_start); diff -Nru evolution-ews-3.44.0/src/EWS/common/e-ews-connection.c evolution-ews-3.44.1/src/EWS/common/e-ews-connection.c --- evolution-ews-3.44.0/src/EWS/common/e-ews-connection.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-ews-connection.c 2022-04-22 06:04:11.000000000 +0000 @@ -2098,11 +2098,13 @@ e_ews_connection_set_password (cnc, NULL); + QUEUE_LOCK (cnc); g_slist_free (cnc->priv->jobs); cnc->priv->jobs = NULL; g_slist_free (cnc->priv->active_job_queue); cnc->priv->active_job_queue = NULL; + QUEUE_UNLOCK (cnc); g_slist_free_full (cnc->priv->subscribed_folders, g_free); cnc->priv->subscribed_folders = NULL; @@ -3594,6 +3596,8 @@ /* The callback also frees the 'simple' */ autodiscover_response_cb (NULL, ad->msgs[5], simple); } + + g_free (new_uri); } gboolean @@ -3724,7 +3728,7 @@ ad->msgs[3] = e_ews_get_msg_for_url (ad->cnc, url4, ad->buf, local_error ? NULL : &local_error); ad->msgs[4] = e_ews_get_msg_for_url (ad->cnc, url5, ad->buf, local_error ? NULL : &local_error); - if (!is_outlook && *domain && (ad->msgs[0] || ad->msgs[1] || ad->msgs[2] || ad->msgs[3] || ad->msgs[4])) { + if (!is_outlook && domain && (ad->msgs[0] || ad->msgs[1] || ad->msgs[2] || ad->msgs[3] || ad->msgs[4])) { gchar *tmp; tmp = g_strdup_printf ("http%s://%s/", use_secure ? "s" : "", domain); @@ -8538,16 +8542,22 @@ ESoapParameter *dparam; dparam = e_soap_parameter_get_first_child_by_name (subparam, "ID"); - if (dparam) + if (dparam) { + g_clear_pointer (&id, g_free); id = e_soap_parameter_get_string_value (dparam); + } dparam = e_soap_parameter_get_first_child_by_name (subparam, "Subject"); - if (dparam) + if (dparam) { + g_clear_pointer (&summary, g_free); summary = e_soap_parameter_get_string_value (dparam); + } dparam = e_soap_parameter_get_first_child_by_name (subparam, "Location"); - if (dparam) + if (dparam) { + g_clear_pointer (&location, g_free); location = e_soap_parameter_get_string_value (dparam); + } } } diff -Nru evolution-ews-3.44.0/src/EWS/common/e-ews-folder.c evolution-ews-3.44.1/src/EWS/common/e-ews-folder.c --- evolution-ews-3.44.0/src/EWS/common/e-ews-folder.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-ews-folder.c 2022-04-22 06:04:11.000000000 +0000 @@ -202,7 +202,7 @@ if (prop_tag && g_ascii_strcasecmp (prop_tag, "0xe08") == 0) { subparam1 = e_soap_parameter_get_first_child_by_name (subparam, "Value"); if (subparam1) - priv->size = e_soap_parameter_get_int_value (subparam1); + priv->size = e_soap_parameter_get_uint64_value (subparam1); } else if (prop_tag && g_ascii_strcasecmp (prop_tag, "0x10f4") == 0) { /* PidTagAttributeHidden */ subparam1 = e_soap_parameter_get_first_child_by_name (subparam, "Value"); if (subparam1) { diff -Nru evolution-ews-3.44.0/src/EWS/common/e-ews-item.c evolution-ews-3.44.1/src/EWS/common/e-ews-item.c --- evolution-ews-3.44.0/src/EWS/common/e-ews-item.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-ews-item.c 2022-04-22 06:04:11.000000000 +0000 @@ -2313,8 +2313,10 @@ param_name = e_soap_parameter_get_name (subparam); if (g_ascii_strcasecmp (param_name, "Name") == 0) { + g_free (name); name = e_soap_parameter_get_string_value (subparam); } else if (g_ascii_strcasecmp (param_name, "Content") == 0) { + g_free (content); value = e_soap_parameter_get_string_value (subparam); content = g_base64_decode (value, &data_len); g_free (value); diff -Nru evolution-ews-3.44.0/src/EWS/common/e-soap-response.c evolution-ews-3.44.1/src/EWS/common/e-soap-response.c --- evolution-ews-3.44.0/src/EWS/common/e-soap-response.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-soap-response.c 2022-04-22 06:04:11.000000000 +0000 @@ -323,6 +323,32 @@ } /** + * e_soap_parameter_get_uint64_value: + * @param: the parameter + * + * Returns: the parameter value as a 64-bit unsigned integer + */ +guint64 +e_soap_parameter_get_uint64_value (ESoapParameter *param) +{ + xmlChar *str; + + g_return_val_if_fail (param != NULL, G_MAXUINT64); + + str = xmlNodeGetContent (param); + if (str) { + guint64 val; + + val = g_ascii_strtoull ((gchar *) str, NULL, 10); + xmlFree (str); + + return val; + } + + return G_MAXUINT64; +} + +/** * e_soap_parameter_get_string_value: * @param: the parameter * diff -Nru evolution-ews-3.44.0/src/EWS/common/e-soap-response.h evolution-ews-3.44.1/src/EWS/common/e-soap-response.h --- evolution-ews-3.44.0/src/EWS/common/e-soap-response.h 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/common/e-soap-response.h 2022-04-22 06:04:11.000000000 +0000 @@ -62,6 +62,8 @@ const gchar * e_soap_parameter_get_name (ESoapParameter *param); gint e_soap_parameter_get_int_value (ESoapParameter *param); +guint64 e_soap_parameter_get_uint64_value + (ESoapParameter *param); gchar * e_soap_parameter_get_string_value (ESoapParameter *param); ESoapParameter * diff -Nru evolution-ews-3.44.0/src/EWS/evolution/e-ews-config-utils.c evolution-ews-3.44.1/src/EWS/evolution/e-ews-config-utils.c --- evolution-ews-3.44.0/src/EWS/evolution/e-ews-config-utils.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/evolution/e-ews-config-utils.c 2022-04-22 06:04:11.000000000 +0000 @@ -658,9 +658,11 @@ /* Use MAPI property to retrieve folder size */ add_props = e_ews_additional_props_new (); + + /* PidTagMessageSizeExtended */ ext_uri = e_ews_extended_field_uri_new (); - ext_uri->prop_tag = g_strdup_printf ("%d", 0x0e08); /* Folder size property tag */ - ext_uri->prop_type = g_strdup ("Integer"); + ext_uri->prop_tag = g_strdup_printf ("%d", 0x0e08); + ext_uri->prop_type = g_strdup ("Long"); add_props->extended_furis = g_slist_prepend (add_props->extended_furis, ext_uri); ids = camel_ews_store_summary_get_folders (fsd->ews_store->summary, NULL, FALSE); @@ -691,7 +693,7 @@ folder_full_name = camel_ews_store_summary_get_folder_full_name ( fsd->ews_store->summary, folder_id->id, NULL); - folder_size = g_format_size (e_ews_folder_get_size (folder)); + folder_size = g_format_size_full (e_ews_folder_get_size (folder), G_FORMAT_SIZE_IEC_UNITS); g_hash_table_insert (fsd->folder_sizes, folder_full_name, folder_size); } @@ -1034,22 +1036,24 @@ service = CAMEL_SERVICE (store); uid = camel_service_get_uid (service); source = e_source_registry_ref_source (registry, uid); - g_return_if_fail (source != NULL); - - settings = camel_service_ref_settings (service); + if (source) { + settings = camel_service_ref_settings (service); - e_ews_edit_folder_permissions ( - parent, - registry, - source, - CAMEL_EWS_SETTINGS (settings), - camel_service_get_display_name (service), - folder_path ? folder_path : camel_service_get_display_name (service), - folder_id, - E_EWS_FOLDER_TYPE_MAILBOX); + e_ews_edit_folder_permissions ( + parent, + registry, + source, + CAMEL_EWS_SETTINGS (settings), + camel_service_get_display_name (service), + folder_path ? folder_path : camel_service_get_display_name (service), + folder_id, + E_EWS_FOLDER_TYPE_MAILBOX); - g_object_unref (settings); - g_object_unref (source); + g_object_unref (settings); + g_object_unref (source); + } else { + g_warn_if_reached (); + } } g_object_unref (store); diff -Nru evolution-ews-3.44.0/src/EWS/evolution/e-ews-subscribe-foreign-folder.c evolution-ews-3.44.1/src/EWS/evolution/e-ews-subscribe-foreign-folder.c --- evolution-ews-3.44.0/src/EWS/evolution/e-ews-subscribe-foreign-folder.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/EWS/evolution/e-ews-subscribe-foreign-folder.c 2022-04-22 06:04:11.000000000 +0000 @@ -277,6 +277,18 @@ g_object_unref (conn); return; } + + if (!cffd->user_displayname) + cffd->user_displayname = display_name; + else + g_free (display_name); + + if (email_address && *email_address) { + g_free (cffd->email); + cffd->email = email_address; + } else { + g_free (email_address); + } } if (g_cancellable_set_error_if_cancelled (cancellable, perror)) { diff -Nru evolution-ews-3.44.0/src/Microsoft365/addressbook/e-book-backend-m365.c evolution-ews-3.44.1/src/Microsoft365/addressbook/e-book-backend-m365.c --- evolution-ews-3.44.0/src/Microsoft365/addressbook/e-book-backend-m365.c 2022-03-18 07:26:27.000000000 +0000 +++ evolution-ews-3.44.1/src/Microsoft365/addressbook/e-book-backend-m365.c 2022-04-22 06:04:11.000000000 +0000 @@ -1077,7 +1077,7 @@ if (!data1 && !data2) return TRUE; - return len1 == len2 && + return len1 == len2 && data1 && data2 && memcmp (data1, data2, len1) == 0; }