Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package evolution-data-server for openSUSE:Factory checked in at 2022-02-11 23:06:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/evolution-data-server (Old) and /work/SRC/openSUSE:Factory/.evolution-data-server.new.1956 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "evolution-data-server" Fri Feb 11 23:06:45 2022 rev:233 rq:953721 version:3.42.4 Changes: -------- --- /work/SRC/openSUSE:Factory/evolution-data-server/evolution-data-server.changes 2022-01-09 22:50:17.767290576 +0100 +++ /work/SRC/openSUSE:Factory/.evolution-data-server.new.1956/evolution-data-server.changes 2022-02-11 23:07:13.770575849 +0100 @@ -1,0 +2,11 @@ +Fri Feb 11 10:46:20 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 3.42.4: + + IMAPx: Avoid creating NOSELECT CamelFolder-s + + CamelMimeFilterCRLF: Correct encoding part of the filter + + CamelMimeParser: Correct body content parse when CRLF is used + + camel-net-utils: Allow NULL string arguments in IDNA/ASCII + functions + + Bugs fixed: glgo#GNOME/evolution-data-server#374 + +------------------------------------------------------------------- Old: ---- evolution-data-server-3.42.3.tar.xz New: ---- evolution-data-server-3.42.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evolution-data-server.spec ++++++ --- /var/tmp/diff_new_pack.paySYr/_old 2022-02-11 23:07:14.622578215 +0100 +++ /var/tmp/diff_new_pack.paySYr/_new 2022-02-11 23:07:14.626578226 +0100 @@ -31,7 +31,7 @@ %bcond_without introspection Name: evolution-data-server -Version: 3.42.3 +Version: 3.42.4 Release: 0 Summary: Evolution Data Server License: LGPL-2.0-only ++++++ evolution-data-server-3.42.3.tar.xz -> evolution-data-server-3.42.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/CMakeLists.txt new/evolution-data-server-3.42.4/CMakeLists.txt --- old/evolution-data-server-3.42.3/CMakeLists.txt 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/CMakeLists.txt 2022-02-11 10:58:14.000000000 +0100 @@ -4,7 +4,7 @@ cmake_policy(VERSION 3.1) project(evolution-data-server - VERSION 3.42.3 + VERSION 3.42.4 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 14) set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-data-server/issues/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/NEWS new/evolution-data-server-3.42.4/NEWS --- old/evolution-data-server-3.42.3/NEWS 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/NEWS 2022-02-11 10:58:14.000000000 +0100 @@ -1,3 +1,15 @@ +Evolution-Data-Server 3.42.4 2022-02-11 +--------------------------------------- + +Bug Fixes: + I#374 - LDAP: Let open when server is offline and marked for offline work + +Miscellaneous: + IMAPx: Avoid creating NOSELECT CamelFolder-s + CamelMimeFilterCRLF: Correct encoding part of the filter + CamelMimeParser: Correct body content parse when CRLF is used + camel-net-utils: Allow NULL string arguments in IDNA/ASCII functions + Evolution-Data-Server 3.42.3 2022-01-07 --------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/addressbook/backends/ldap/e-book-backend-ldap.c new/evolution-data-server-3.42.4/src/addressbook/backends/ldap/e-book-backend-ldap.c --- old/evolution-data-server-3.42.3/src/addressbook/backends/ldap/e-book-backend-ldap.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/addressbook/backends/ldap/e-book-backend-ldap.c 2022-02-11 10:58:14.000000000 +0100 @@ -839,11 +839,16 @@ ldap_error = ldap_start_tls_s (blpriv->ldap, NULL, NULL); #endif if (ldap_error != LDAP_SUCCESS) { - g_message ("TLS not available (fatal version), (ldap_error 0x%02x)", ldap_error); + if (ldap_error == LDAP_SERVER_DOWN) { + g_message ("TLS failed due to server being down"); + g_propagate_error (error, EC_ERROR (E_CLIENT_ERROR_REPOSITORY_OFFLINE)); + } else { + g_message ("TLS not available (fatal version), (ldap_error 0x%02x)", ldap_error); + g_propagate_error (error, EC_ERROR (E_CLIENT_ERROR_TLS_NOT_AVAILABLE)); + } ldap_unbind (blpriv->ldap); blpriv->ldap = NULL; g_rec_mutex_unlock (&eds_ldap_handler_lock); - g_propagate_error (error, EC_ERROR (E_CLIENT_ERROR_TLS_NOT_AVAILABLE)); return FALSE; } else if (enable_debug) g_message ("TLS active"); @@ -5142,9 +5147,12 @@ } if (error != NULL && enable_debug) - printf ("%s ... failed to connect to server \n", G_STRFUNC); + printf ("%s ... failed to connect to server: %s\n", G_STRFUNC, error->message); - if (error == NULL && bl->priv->marked_for_offline) + /* Ignore 'Repository Offline' error when being marked for offline work */ + if (bl->priv->marked_for_offline && g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_REPOSITORY_OFFLINE)) + g_clear_error (&error); + else if (!error && bl->priv->marked_for_offline) generate_cache (bl); g_signal_connect_object (source, "changed", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/camel/camel-mime-filter-crlf.c new/evolution-data-server-3.42.4/src/camel/camel-mime-filter-crlf.c --- old/evolution-data-server-3.42.3/src/camel/camel-mime-filter-crlf.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/camel/camel-mime-filter-crlf.c 2022-02-11 10:58:14.000000000 +0100 @@ -60,13 +60,21 @@ outptr = mime_filter->outbuf; while (inptr < inend) { if (*inptr == '\r') { + if (priv->saw_cr && !priv->saw_lf) + *outptr++ = '\n'; priv->saw_cr = TRUE; + priv->saw_lf = FALSE; } else if (*inptr == '\n') { priv->saw_lf = TRUE; if (!priv->saw_cr) *outptr++ = '\r'; priv->saw_cr = FALSE; } else { + if (priv->saw_cr && !priv->saw_lf) { + priv->saw_lf = TRUE; + *outptr++ = '\n'; + } + if (do_dots && *inptr == '.' && priv->saw_lf) *outptr++ = '.'; @@ -147,6 +155,23 @@ crlf_filter = CAMEL_MIME_FILTER_CRLF (mime_filter); if (crlf_filter->priv->direction == CAMEL_MIME_FILTER_CRLF_ENCODE && + crlf_filter->priv->saw_cr && !crlf_filter->priv->saw_lf) { + gchar *outptr; + + camel_mime_filter_set_size (mime_filter, *outlen + 1, FALSE); + + outptr = mime_filter->outbuf + *outlen; + *outptr++ = '\n'; + + *out = mime_filter->outbuf; + *outlen = outptr - mime_filter->outbuf; + *outprespace = mime_filter->outpre; + + crlf_filter->priv->saw_cr = FALSE; + crlf_filter->priv->ends_with_lf = TRUE; + } + + if (crlf_filter->priv->direction == CAMEL_MIME_FILTER_CRLF_ENCODE && crlf_filter->priv->ensure_crlf_end && !crlf_filter->priv->ends_with_lf) { gchar *outptr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/camel/camel-mime-parser.c new/evolution-data-server-3.42.4/src/camel/camel-mime-parser.c --- old/evolution-data-server-3.42.3/src/camel/camel-mime-parser.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/camel/camel-mime-parser.c 2022-02-11 10:58:14.000000000 +0100 @@ -1547,9 +1547,12 @@ *data = start; /* if we hit a boundary, we should not include the closing \n */ - if (onboundary && (inptr - start) > 0) + if (onboundary && (inptr - start) > 0) { *length = inptr-start-1; - else + /* in case it was "\r\n", remove also the "\r" */ + if (*length > 0 && start[*length - 1] == '\r') + *length = (*length) - 1; + } else *length = inptr-start; /*printf("got %scontent: '%.*s'\n", s->midline?"partial ":"", inptr-start, start);*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/camel/camel-net-utils.c new/evolution-data-server-3.42.4/src/camel/camel-net-utils.c --- old/evolution-data-server-3.42.3/src/camel/camel-net-utils.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/camel/camel-net-utils.c 2022-02-11 10:58:14.000000000 +0100 @@ -793,14 +793,15 @@ /** * camel_host_idna_to_ascii: - * @host: Host name, with or without non-ascii letters in utf8 + * @host: (nullable): Host name, with or without non-ascii letters in utf8 * * Converts IDN (Internationalized Domain Name) into ASCII representation. * If there's a failure or the @host has only ASCII letters, then a copy * of @host is returned. * - * Returns: Newly allocated string with only ASCII letters describing the @host. - * Free it with g_free() when done with it. + * Returns: (nullable): Newly allocated string with only ASCII letters + * describing the @host or %NULL, when the @host is %NULL. Free the returned + * string with g_free() when no longer needed. * * Since: 3.16 **/ @@ -812,7 +813,8 @@ const gchar *ptr; gchar *ascii = NULL; - g_return_val_if_fail (host != NULL, NULL); + if (!host) + return NULL; ptr = host; while (*ptr > 0) @@ -866,7 +868,7 @@ /** * camel_utils_sanitize_ascii_domain_in_address: - * @email_address: an email address as string + * @email_address: (nullable): an email address as string * @do_format: what format will be returned * * Checks whether the domain in the @email_address requires @@ -891,9 +893,7 @@ CamelInternetAddress *addr; gchar *res = NULL; - g_return_val_if_fail (email_address != NULL, NULL); - - if (camel_string_is_all_ascii (email_address)) + if (!email_address || camel_string_is_all_ascii (email_address)) return NULL; addr = camel_internet_address_new (); @@ -915,7 +915,7 @@ /** * camel_utils_sanitize_ascii_domain_in_url_str: - * @url_str: a URL as string + * @url_str: (nullable): a URL as string * * Checks whether the host name of the @url_str requires conversion * to ASCII and converts it if needed. Returns %NULL, when no conversion @@ -934,9 +934,7 @@ CamelURL *url; gchar *res = NULL; - g_return_val_if_fail (url_str != NULL, NULL); - - if (camel_string_is_all_ascii (url_str)) + if (!url_str || camel_string_is_all_ascii (url_str)) return NULL; url = camel_url_new (url_str, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/camel/providers/imapx/camel-imapx-store.c new/evolution-data-server-3.42.4/src/camel/providers/imapx/camel-imapx-store.c --- old/evolution-data-server-3.42.3/src/camel/providers/imapx/camel-imapx-store.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/camel/providers/imapx/camel-imapx-store.c 2022-02-11 10:58:14.000000000 +0100 @@ -1137,7 +1137,7 @@ si = camel_store_summary_path (imapx_store->summary, folder_name); - if (si != NULL) { + if (si != NULL && !(si->flags & CAMEL_STORE_INFO_FOLDER_NOSELECT)) { gchar *base_dir; gchar *folder_dir; @@ -1147,8 +1147,6 @@ store, folder_dir, folder_name, error); g_free (folder_dir); g_free (base_dir); - - camel_store_summary_info_unref (imapx_store->summary, si); } else { g_set_error ( error, CAMEL_STORE_ERROR, @@ -1156,6 +1154,9 @@ _("No such folder %s"), folder_name); } + if (si) + camel_store_summary_info_unref (imapx_store->summary, si); + return new_folder; } @@ -1962,10 +1963,11 @@ subscribed = ((info->flags & CAMEL_FOLDER_SUBSCRIBED) != 0); - res = store_class->can_refresh_folder (store, info, &local_error) || - check_all || (check_subscribed && subscribed); + res = !(info->flags & CAMEL_FOLDER_NOSELECT) && ( + store_class->can_refresh_folder (store, info, &local_error) || + check_all || (check_subscribed && subscribed)); - if (!res && !local_error) { + if (!res && !local_error && !(info->flags & CAMEL_FOLDER_NOSELECT)) { CamelFolder *folder; folder = camel_store_get_folder_sync (store, info->full_name, 0, NULL, &local_error); @@ -2276,6 +2278,7 @@ CamelFolder *folder; CamelIMAPXMailbox *parent_mailbox = NULL; CamelFolderInfo *fi = NULL; + CamelStoreInfo *si; GList *list; const gchar *namespace_prefix; const gchar *parent_mailbox_name; @@ -2291,6 +2294,16 @@ /* Obtain the separator from the parent CamelIMAPXMailbox. */ + si = camel_store_summary_path (imapx_store->summary, parent_name); + + if (!si || (si->flags & CAMEL_STORE_INFO_FOLDER_NOSELECT) != 0) { + if (si) + camel_store_summary_info_unref (imapx_store->summary, si); + goto check_namespace; + } + + camel_store_summary_info_unref (imapx_store->summary, si); + folder = camel_store_get_folder_sync ( store, parent_name, 0, cancellable, error); @@ -2842,20 +2855,22 @@ GPtrArray **inout_folders) { while (info) { - CamelFolder *folder; - if (info->child) imapx_store_dup_downsync_folders_recurse (store, info->child, inout_folders); - folder = camel_store_get_folder_sync (store, info->full_name, 0, NULL, NULL); - if (folder && CAMEL_IS_IMAPX_FOLDER (folder) && - camel_offline_folder_can_downsync (CAMEL_OFFLINE_FOLDER (folder))) { - if (!*inout_folders) - *inout_folders = g_ptr_array_sized_new (32); - g_ptr_array_add (*inout_folders, g_object_ref (folder)); - } + if (!(info->flags & CAMEL_FOLDER_NOSELECT)) { + CamelFolder *folder; - g_clear_object (&folder); + folder = camel_store_get_folder_sync (store, info->full_name, 0, NULL, NULL); + if (folder && CAMEL_IS_IMAPX_FOLDER (folder) && + camel_offline_folder_can_downsync (CAMEL_OFFLINE_FOLDER (folder))) { + if (!*inout_folders) + *inout_folders = g_ptr_array_sized_new (32); + g_ptr_array_add (*inout_folders, g_object_ref (folder)); + } + + g_clear_object (&folder); + } info = info->next; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.42.3/src/camel/tests/mime-filter/test-crlf.c new/evolution-data-server-3.42.4/src/camel/tests/mime-filter/test-crlf.c --- old/evolution-data-server-3.42.3/src/camel/tests/mime-filter/test-crlf.c 2022-01-07 11:25:06.000000000 +0100 +++ new/evolution-data-server-3.42.4/src/camel/tests/mime-filter/test-crlf.c 2022-02-11 10:58:14.000000000 +0100 @@ -176,6 +176,22 @@ camel_test_pull (); } +static void +dump_data (const gchar *what, + const gchar *data, + guint len) +{ + guint ii; + + printf ("%s %u bytes:\n", what, len); + for (ii = 0; ii < len; ii++) { + printf (" %02x", data[ii]); + if (!((ii + 1) % 16) && ii + 1 < len) + printf ("\n"); + } + printf ("\n"); +} + static gboolean test_case_ensure_crlf_end_run (const gchar *in, const gchar *expected, @@ -209,6 +225,9 @@ if (!success) camel_test_fail ("Returned text '%s' and expected text '%s' do not match", bytes, expected); } else { + dump_data (" Wrote", in, strlen (in)); + dump_data (" Read", bytes, bytes_read); + dump_data (" Expected", expected, strlen (expected)); camel_test_fail ("Read %u bytes, but expected %u bytes", bytes_read, strlen (expected)); } } else { @@ -236,7 +255,26 @@ { "a\r\nb", "a\r\nb", "a\r\nb\r\n" }, { "a\nb", "a\r\nb", "a\r\nb\r\n" }, { "a\r\nb\n", "a\r\nb\r\n", "a\r\nb\r\n" }, - { "a\n\nb", "a\r\n\r\nb", "a\r\n\r\nb\r\n" } + { "a\n\nb", "a\r\n\r\nb", "a\r\n\r\nb\r\n" }, + { "\n", "\r\n", "\r\n" }, + { "\r", "\r\n", "\r\n" }, + { ".", "..", "..\r\n" }, + { "\n.", "\r\n..", "\r\n..\r\n" }, + { "\r.", "\r\n..", "\r\n..\r\n" }, + { "\r\n.", "\r\n..", "\r\n..\r\n" }, + { "a.b", "a.b", "a.b\r\n" }, + { "\r.b", "\r\n..b", "\r\n..b\r\n" }, + { "\n.b", "\r\n..b", "\r\n..b\r\n" }, + { "\n.\rb", "\r\n..\r\nb", "\r\n..\r\nb\r\n" }, + { "\n.\nb", "\r\n..\r\nb", "\r\n..\r\nb\r\n" }, + { "\r.\nb", "\r\n..\r\nb", "\r\n..\r\nb\r\n" }, + { "\r.\rb", "\r\n..\r\nb", "\r\n..\r\nb\r\n" }, + { "a\r\nb\rc\nd\n\re\r\nf\ng\n\r\n\r\r\n\n\r", + "a\r\nb\r\nc\r\nd\r\n\r\ne\r\nf\r\ng\r\n\r\n\r\n\r\n\r\n\r\n", + "a\r\nb\r\nc\r\nd\r\n\r\ne\r\nf\r\ng\r\n\r\n\r\n\r\n\r\n\r\n" }, + { "a\n\rb\nc\rd\r\ne\n\rf\rg\r\n\r\n\n\r\r\n", + "a\r\n\r\nb\r\nc\r\nd\r\ne\r\n\r\nf\r\ng\r\n\r\n\r\n\r\n\r\n", + "a\r\n\r\nb\r\nc\r\nd\r\ne\r\n\r\nf\r\ng\r\n\r\n\r\n\r\n\r\n" } }; guint ii;