Hello community,
here is the log from the commit of package evolution-data-server for
openSUSE:Factory checked in at 2017-02-19 00:38:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evolution-data-server (Old)
and /work/SRC/openSUSE:Factory/.evolution-data-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "evolution-data-server"
Changes:
--------
---
/work/SRC/openSUSE:Factory/evolution-data-server/evolution-data-server.changes
2017-01-23 11:21:25.761678810 +0100
+++
/work/SRC/openSUSE:Factory/.evolution-data-server.new/evolution-data-server.changes
2017-02-19 00:38:27.906086560 +0100
@@ -1,0 +2,13 @@
+Mon Feb 13 12:51:48 UTC 2017 - [email protected]
+
+- Update to version 3.22.5:
+ + Ignore errors when getting message for a body-contains search.
+ + Fix a ref/unref imbalance of CamelIMAPXStoreInfo.
+ + Fix a memory leak in camel_imapx_server_append_message_sync().
+ + Unable to add additional Google calendar.
+ + [IMAPx] Avoid unneeded full flags folder update when no changes
+ made.
+ + Bugs fixed: bgo#777431, bgo#777695, bgo#777781, bgo#778222,
+ bgo#778069, bgo#778265.
+
+-------------------------------------------------------------------
Old:
----
evolution-data-server-3.22.4.tar.xz
New:
----
evolution-data-server-3.22.5.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ evolution-data-server.spec ++++++
--- /var/tmp/diff_new_pack.GbNMmR/_old 2017-02-19 00:38:28.557994877 +0100
+++ /var/tmp/diff_new_pack.GbNMmR/_new 2017-02-19 00:38:28.561994314 +0100
@@ -33,7 +33,7 @@
Name: evolution-data-server
%define _evo_version 3.22
-Version: 3.22.4
+Version: 3.22.5
Release: 0
Summary: Evolution Data Server
License: LGPL-2.1+
++++++ evolution-data-server-3.22.4.tar.xz ->
evolution-data-server-3.22.5.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/evolution-data-server-3.22.4/NEWS
new/evolution-data-server-3.22.5/NEWS
--- old/evolution-data-server-3.22.4/NEWS 2017-01-16 12:38:20.000000000
+0100
+++ new/evolution-data-server-3.22.5/NEWS 2017-02-13 12:39:48.000000000
+0100
@@ -1,3 +1,21 @@
+Evolution-Data-Server 3.22.5 2017-02-13
+---------------------------------------
+
+Bug Fixes:
+ Bug 777431 - [IMAPx] Gmail's BODY search returns only whole word
matches (Milan Crha)
+ Bug 777695 - [ECalClient] Produce CRLF line endings in iCalendar string
(Tim Ruffing)
+ Bug 777781 - Unfold header values before comparing them (Milan Crha)
+ Bug 778222 - Fix a build break with gperf 3.1 (Milan Crha)
+ Bug 778069 - UI not updated after IMAP NOTIFY notifications (Milan Crha)
+ Bug 778265 - Serialize access to underlying NNTP stream (Milan Crha)
+
+Miscellaneous:
+ Ignore errors when getting message for a body-contains search (Milan
Crha)
+ Fix a ref/unref imbalance of CamelIMAPXStoreInfo (Milan Crha)
+ Fix a memory leak in camel_imapx_server_append_message_sync() (Milan
Crha)
+ Unable to add additional Google calendar (Milan Crha)
+ [IMAPx] Avoid unneeded full flags folder update when no changes made
(Milan Crha)
+
Evolution-Data-Server 3.22.4 2017-01-16
---------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/calendar/libecal/e-cal-client.c
new/evolution-data-server-3.22.5/calendar/libecal/e-cal-client.c
--- old/evolution-data-server-3.22.4/calendar/libecal/e-cal-client.c
2017-01-05 15:41:18.000000000 +0100
+++ new/evolution-data-server-3.22.5/calendar/libecal/e-cal-client.c
2017-01-26 14:00:24.000000000 +0100
@@ -3470,10 +3470,10 @@
vcal_string = g_string_new (NULL);
g_string_append (
vcal_string,
- "BEGIN:VCALENDAR\n"
- "PRODID:-//Ximian//NONSGML Evolution Calendar//EN\n"
- "VERSION:2.0\n"
- "METHOD:PUBLISH\n");
+ "BEGIN:VCALENDAR\r\n"
+ "PRODID:-//Ximian//NONSGML Evolution Calendar//EN\r\n"
+ "VERSION:2.0\r\n"
+ "METHOD:PUBLISH\r\n");
/* Now concatenate all the timezone strings. This also frees the
* timezone strings as it goes. */
@@ -3485,7 +3485,7 @@
/* If there were any timezones to send, create a complete VCALENDAR,
* else just send the VEVENT/VTODO string. */
g_string_append (vcal_string, obj_string);
- g_string_append (vcal_string, "END:VCALENDAR\n");
+ g_string_append (vcal_string, "END:VCALENDAR\r\n");
g_free (obj_string);
obj_string = g_string_free (vcal_string, FALSE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/camel-folder-search.c
new/evolution-data-server-3.22.5/camel/camel-folder-search.c
--- old/evolution-data-server-3.22.4/camel/camel-folder-search.c
2016-09-19 10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/camel-folder-search.c
2017-01-18 11:20:08.000000000 +0100
@@ -75,6 +75,8 @@
* This saves us having to perform more complex UID life cycle
management
* and the overhead from the additional refs/unrefs it would require. */
GPtrArray *owned_pstrings;
+
+ gboolean only_cached_messages;
};
typedef enum {
@@ -269,13 +271,28 @@
}
static CamelMimeMessage *
+search_get_message_sync (CamelFolderSearch *search,
+ CamelFolder *folder,
+ const gchar *uid,
+ GCancellable *cancellable)
+{
+ g_return_val_if_fail (CAMEL_IS_FOLDER_SEARCH (search), NULL);
+ g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
+ g_return_val_if_fail (uid != NULL, NULL);
+
+ if (camel_folder_search_get_only_cached_messages (search))
+ return camel_folder_get_message_cached (folder, uid,
cancellable);
+
+ return camel_folder_get_message_sync (folder, uid, cancellable, NULL);
+}
+
+static CamelMimeMessage *
get_current_message (CamelFolderSearch *search)
{
if (!search || !search->folder || !search->current)
return NULL;
- return camel_folder_get_message_sync (
- search->folder, search->current->uid,
search->priv->cancellable, NULL);
+ return search_get_message_sync (search, search->folder,
search->current->uid, search->priv->cancellable);
}
static CamelSExpResult *
@@ -576,7 +593,8 @@
}
static gboolean
-match_words_message (CamelFolder *folder,
+match_words_message (CamelFolderSearch *search,
+ CamelFolder *folder,
const gchar *uid,
struct _camel_search_words *words,
GCancellable *cancellable,
@@ -589,7 +607,7 @@
if (g_cancellable_set_error_if_cancelled (cancellable, error))
return truth;
- msg = camel_folder_get_message_sync (folder, uid, cancellable, error);
+ msg = search_get_message_sync (search, folder, uid, cancellable);
if (msg) {
mask = 0;
truth = match_words_1message ((CamelDataWrapper *) msg, words,
&mask, cancellable);
@@ -622,7 +640,7 @@
for (i = 0; i < indexed->len && !g_cancellable_is_cancelled
(cancellable); i++) {
const gchar *uid = g_ptr_array_index (indexed, i);
- if (match_words_message (
+ if (match_words_message (search,
search->folder, uid, words,
cancellable, error))
g_ptr_array_add (matches, (gchar *) uid);
@@ -635,7 +653,7 @@
for (i = 0; i < v->len && !g_cancellable_is_cancelled
(cancellable); i++) {
gchar *uid = g_ptr_array_index (v, i);
- if (match_words_message (
+ if (match_words_message (search,
search->folder, uid, words,
cancellable, error))
g_ptr_array_add (matches, (gchar *) uid);
@@ -1079,7 +1097,7 @@
error);
} else {
/* TODO: cache current message
incase of multiple body search terms */
- truth = match_words_message (
+ truth = match_words_message
(search,
search->folder,
camel_message_info_get_uid (search->current),
words,
@@ -1181,8 +1199,7 @@
for (i = 0; i < v->len && !g_cancellable_is_cancelled
(search->priv->cancellable); i++) {
gchar *uid = g_ptr_array_index (v, i);
- message = camel_folder_get_message_sync (
- search->folder, uid,
search->priv->cancellable, NULL);
+ message = search_get_message_sync (search,
search->folder, uid, search->priv->cancellable);
if (message) {
if (camel_search_message_body_contains
((CamelDataWrapper *) message, &pattern)) {
g_ptr_array_add
(r->value.ptrarray, uid);
@@ -1698,6 +1715,7 @@
camel_folder_search_init (CamelFolderSearch *search)
{
search->priv = CAMEL_FOLDER_SEARCH_GET_PRIVATE (search);
+ search->priv->only_cached_messages = FALSE;
search->sexp = camel_sexp_new ();
}
@@ -1735,6 +1753,44 @@
}
/**
+ * camel_folder_search_set_only_cached_messages:
+ * @search: a #CamelFolderSearch
+ * @only_cached_messages: a value to set
+ *
+ * Sets whether only locally cached messages can be searched. The default
+ * value is %FALSE, which means that when a message is required and it is
+ * not available locally, then it is downloaded from the server, if possible.
+ *
+ * Since: 3.22.5
+ **/
+void
+camel_folder_search_set_only_cached_messages (CamelFolderSearch *search,
+ gboolean only_cached_messages)
+{
+ g_return_if_fail (CAMEL_IS_FOLDER_SEARCH (search));
+
+ search->priv->only_cached_messages = only_cached_messages;
+}
+
+/**
+ * camel_folder_search_get_only_cached_messages:
+ * @search: a #CamelFolderSearch
+ *
+ * Returns: Whether only cached messages can be searched. See
+ * camel_folder_search_set_only_cached_messages() for more
+ * information what it means.
+ *
+ * Since: 3.22.5
+ **/
+gboolean
+camel_folder_search_get_only_cached_messages (CamelFolderSearch *search)
+{
+ g_return_val_if_fail (CAMEL_IS_FOLDER_SEARCH (search), FALSE);
+
+ return search->priv->only_cached_messages;
+}
+
+/**
* camel_folder_search_set_folder:
* @search:
* @folder: A folder.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/camel-folder-search.h
new/evolution-data-server-3.22.5/camel/camel-folder-search.h
--- old/evolution-data-server-3.22.4/camel/camel-folder-search.h
2016-03-21 08:34:20.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/camel-folder-search.h
2017-01-18 11:16:20.000000000 +0100
@@ -268,6 +268,11 @@
GType camel_folder_search_get_type (void) G_GNUC_CONST;
CamelFolderSearch *
camel_folder_search_new (void);
+void camel_folder_search_set_only_cached_messages
+ (CamelFolderSearch *search,
+ gboolean only_cached_messages);
+gboolean camel_folder_search_get_only_cached_messages
+ (CamelFolderSearch *search);
/* XXX This stuff currently gets cleared when you run a search.
* What on earth was i thinking ... */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/evolution-data-server-3.22.4/camel/camel-folder.c
new/evolution-data-server-3.22.5/camel/camel-folder.c
--- old/evolution-data-server-3.22.4/camel/camel-folder.c 2016-12-07
22:03:26.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/camel-folder.c 2017-01-18
11:15:14.000000000 +0100
@@ -3022,7 +3022,7 @@
GError **error)
{
CamelFolderClass *class;
- CamelMimeMessage *message = NULL;
+ CamelMimeMessage *message;
g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
g_return_val_if_fail (message_uid != NULL, NULL);
@@ -3038,21 +3038,14 @@
message_uid, camel_service_get_display_name (CAMEL_SERVICE
(camel_folder_get_parent_store (folder))),
camel_folder_get_full_name (folder));
- if (class->get_message_cached) {
- /* Return cached message, if available locally; this should
- * not do any network I/O, only check if message is already
- * downloaded and return it quicker, not being blocked by
- * the folder's lock. Returning NULL is not considered as
- * an error, it just means that the message is still
- * to-be-downloaded. */
- message = class->get_message_cached (
- folder, message_uid, cancellable);
- }
+ message = camel_folder_get_message_cached (folder, message_uid,
cancellable);
if (message == NULL) {
/* Recover from a dropped connection, unless we're offline. */
- if (!folder_maybe_connect_sync (folder, cancellable, error))
+ if (!folder_maybe_connect_sync (folder, cancellable, error)) {
+ camel_operation_pop_message (cancellable);
return NULL;
+ }
camel_folder_lock (folder);
@@ -3094,6 +3087,42 @@
return message;
}
+/**
+ * camel_folder_get_message_cached:
+ * @folder: a #CamelFolder
+ * @message_uid: the message UID
+ * @cancellable: optional #GCancellable object, or %NULL
+ *
+ * Gets the message corresponding to @message_uid from the @folder cache,
+ * if available locally. This should not do any network I/O, only check
+ * if message is already downloaded and return it quickly, not being
+ * blocked by the folder's lock. Returning NULL is not considered as
+ * an error, it just means that the message is still to-be-downloaded.
+ *
+ * Note: This function is called automatically within
camel_folder_get_message_sync().
+ *
+ * Returns: (transfer full) (nullable): a cached #CamelMimeMessage
corresponding
+ * to the requested UID
+ *
+ * Since: 3.22.5
+ **/
+CamelMimeMessage *
+camel_folder_get_message_cached (CamelFolder *folder,
+ const gchar *message_uid,
+ GCancellable *cancellable)
+{
+ CamelFolderClass *class;
+
+ g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL);
+ g_return_val_if_fail (message_uid != NULL, NULL);
+
+ class = CAMEL_FOLDER_GET_CLASS (folder);
+ if (!class->get_message_cached)
+ return NULL;
+
+ return class->get_message_cached (folder, message_uid, cancellable);
+}
+
/* Helper for camel_folder_get_message() */
static void
folder_get_message_thread (GTask *task,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/evolution-data-server-3.22.4/camel/camel-folder.h
new/evolution-data-server-3.22.5/camel/camel-folder.h
--- old/evolution-data-server-3.22.4/camel/camel-folder.h 2016-09-19
10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/camel-folder.h 2017-01-18
11:15:14.000000000 +0100
@@ -437,6 +437,10 @@
camel_folder_get_message_finish (CamelFolder *folder,
GAsyncResult *result,
GError **error);
+CamelMimeMessage *
+ camel_folder_get_message_cached (CamelFolder *folder,
+ const gchar *message_uid,
+ GCancellable *cancellable);
CamelFolderQuotaInfo *
camel_folder_get_quota_info_sync
(CamelFolder *folder,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/camel-search-private.c
new/evolution-data-server-3.22.5/camel/camel-search-private.c
--- old/evolution-data-server-3.22.4/camel/camel-search-private.c
2016-09-19 10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/camel-search-private.c
2017-01-26 17:27:52.000000000 +0100
@@ -443,9 +443,13 @@
const guchar *ptr;
gint truth = FALSE, i;
CamelInternetAddress *cia;
- gchar *v, *vdom, *mdom;
+ gchar *v, *vdom, *mdom, *unfolded;
gunichar c;
+ unfolded = camel_header_unfold (value);
+ if (unfolded)
+ value = unfolded;
+
ptr = (const guchar *) value;
while ((c = camel_utf8_getc (&ptr)) && g_unichar_isspace (c))
value = (const gchar *) ptr;
@@ -477,8 +481,10 @@
case CAMEL_SEARCH_TYPE_ADDRESS_ENCODED:
case CAMEL_SEARCH_TYPE_ADDRESS:
/* Possible simple case to save some work if we can. */
- if (header_match (value, match, how))
- return TRUE;
+ if (header_match (value, match, how)) {
+ truth = TRUE;
+ break;
+ }
/* Now we decode any addresses, and try
* as-is matches on name and address parts. */
@@ -497,6 +503,8 @@
break;
}
+ g_free (unfolded);
+
return truth;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-search.c
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-search.c
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-search.c
2016-09-19 10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-search.c
2017-01-18 11:15:14.000000000 +0100
@@ -350,6 +350,7 @@
CamelSExpResult *result;
GString *criteria;
GPtrArray *words;
+ gboolean is_gmail;
/* Always do body-search server-side */
if (imapx_search->priv->local_data_search) {
@@ -390,10 +391,73 @@
result = imapx_search_process_criteria (sexp, search, imapx_store,
criteria, "BODY", words, G_STRFUNC);
+ is_gmail = camel_imapx_store_is_gmail_server (imapx_store);
+
g_string_free (criteria, TRUE);
g_ptr_array_free (words, TRUE);
g_object_unref (imapx_store);
+ if (is_gmail && result && (result->type == CAMEL_SEXP_RES_ARRAY_PTR ||
(result->type == CAMEL_SEXP_RES_BOOL && !result->value.boolean))) {
+ /* Gmail returns BODY matches on whole words only, which is not
it should be,
+ thus try also locally cached messages to provide any better
results. */
+ gboolean was_only_cached_messages;
+ CamelSExpResult *cached_result;
+
+ was_only_cached_messages =
camel_folder_search_get_only_cached_messages (search);
+ camel_folder_search_set_only_cached_messages (search, TRUE);
+
+ cached_result = CAMEL_FOLDER_SEARCH_CLASS
(camel_imapx_search_parent_class)->body_contains (sexp, argc, argv, search);
+
+ camel_folder_search_set_only_cached_messages (search,
was_only_cached_messages);
+
+ if (cached_result && cached_result->type == result->type) {
+ if (result->type == CAMEL_SEXP_RES_BOOL) {
+ result->value.boolean =
cached_result->value.boolean;
+ } else {
+ /* Merge the two UID arrays */
+ GHashTable *merge;
+ GHashTableIter iter;
+ GPtrArray *array;
+ gpointer key;
+ guint ii;
+
+ /* UID-s are strings from the string pool, thus
can be compared directly */
+ merge = g_hash_table_new (g_direct_hash,
g_direct_equal);
+
+ array = result->value.ptrarray;
+ for (ii = 0; array && ii < array->len; ii++) {
+ gpointer uid = g_ptr_array_index
(array, ii);
+
+ if (uid)
+ g_hash_table_insert (merge,
uid, NULL);
+ }
+
+ array = cached_result->value.ptrarray;
+ for (ii = 0; array && ii < array->len; ii++) {
+ gpointer uid = g_ptr_array_index
(array, ii);
+
+ if (uid)
+ g_hash_table_insert (merge,
uid, NULL);
+ }
+
+ array = g_ptr_array_new_full (g_hash_table_size
(merge), (GDestroyNotify) camel_pstring_free);
+
+ g_hash_table_iter_init (&iter, merge);
+ while (g_hash_table_iter_next (&iter, &key,
NULL)) {
+ g_ptr_array_add (array, (gpointer)
camel_pstring_strdup (key));
+ }
+
+ g_hash_table_destroy (merge);
+
+ g_ptr_array_unref (result->value.ptrarray);
+
+ result->value.ptrarray = array;
+ }
+ }
+
+ camel_sexp_result_free (sexp, cached_result);
+ }
+
return result;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-server.c
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-server.c
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-server.c
2017-01-09 14:51:05.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-server.c
2017-02-10 16:45:11.000000000 +0100
@@ -1685,6 +1685,10 @@
if (mailbox != NULL) {
camel_imapx_mailbox_handle_status_response (mailbox, response);
camel_imapx_store_emit_mailbox_updated (imapx_store, mailbox);
+
+ if (camel_imapx_server_is_in_idle (is))
+ g_signal_emit (is, signals[REFRESH_MAILBOX], 0,
mailbox);
+
g_object_unref (mailbox);
}
@@ -1771,7 +1775,7 @@
is->priv->context->sinfo = imapx_parse_status (
CAMEL_IMAPX_INPUT_STREAM (input_stream),
- mailbox, cancellable, error);
+ mailbox, TRUE, cancellable, error);
g_clear_object (&mailbox);
@@ -2362,7 +2366,7 @@
ic->status = imapx_parse_status (
CAMEL_IMAPX_INPUT_STREAM (input_stream),
- mailbox, cancellable, error);
+ mailbox, FALSE, cancellable, error);
g_clear_object (&mailbox);
@@ -4738,6 +4742,7 @@
g_object_unref (folder);
}
+ camel_message_info_unref (info);
g_free (path);
return success;
@@ -5079,7 +5084,6 @@
}
if (is->priv->use_qresync && imapx_summary->modseq > 0 && uidvalidity >
0) {
- imapx_summary->modseq = highestmodseq;
if (total != messages ||
camel_folder_summary_get_unread_count (folder->summary) !=
unseen ||
imapx_summary->modseq != highestmodseq) {
@@ -5094,6 +5098,12 @@
imapx_summary->modseq,
highestmodseq);
} else {
+ imapx_summary->uidnext = uidnext;
+
+ camel_folder_summary_touch (folder->summary);
+ camel_folder_summary_save_to_db (folder->summary, NULL);
+ imapx_update_store_summary (folder);
+
c (
is->priv->tagprefix,
"OK, after QRESYNC we're still in sync. "
@@ -5130,6 +5140,13 @@
if (success && uidl != 1)
success = imapx_server_fetch_changes (is, mailbox, folder,
known_uids, 0, uidl, cancellable, error);
+ if (success) {
+ imapx_summary->modseq = highestmodseq;
+ imapx_summary->uidnext = uidnext;
+
+ camel_folder_summary_touch (folder->summary);
+ }
+
g_mutex_lock (&is->priv->changes_lock);
changes = is->priv->changes;
@@ -5170,11 +5187,11 @@
camel_folder_summary_free_array (array);
}
- if (camel_folder_change_info_changed (changes)) {
- camel_folder_summary_save_to_db (folder->summary, NULL);
- imapx_update_store_summary (folder);
+ camel_folder_summary_save_to_db (folder->summary, NULL);
+ imapx_update_store_summary (folder);
+
+ if (camel_folder_change_info_changed (changes))
camel_folder_changed (folder, changes);
- }
camel_folder_change_info_free (changes);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store-summary.c
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store-summary.c
---
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store-summary.c
2016-03-21 08:34:20.000000000 +0100
+++
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store-summary.c
2017-01-27 10:04:15.000000000 +0100
@@ -325,6 +325,8 @@
return (CamelIMAPXStoreInfo *) match;
}
+/* The returned CamelIMAPXStoreInfo is referenced, unref it with
+ camel_store_summary_info_unref() when no longer needed */
CamelIMAPXStoreInfo *
camel_imapx_store_summary_add_from_mailbox (CamelStoreSummary *summary,
CamelIMAPXMailbox *mailbox)
@@ -341,11 +343,8 @@
separator = camel_imapx_mailbox_get_separator (mailbox);
info = camel_imapx_store_summary_mailbox (summary, mailbox_name);
- if (info != NULL) {
- camel_store_summary_info_unref (
- summary, (CamelStoreInfo *) info);
+ if (info != NULL)
return info;
- }
folder_path = camel_imapx_mailbox_to_folder_path (
mailbox_name, separator);
@@ -357,6 +356,8 @@
g_return_val_if_fail (info != NULL, NULL);
+ camel_store_summary_info_ref (summary, (CamelStoreInfo *) info);
+
info->mailbox_name = g_strdup (mailbox_name);
info->separator = separator;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store.c
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store.c
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store.c
2016-09-19 10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store.c
2017-01-27 10:04:15.000000000 +0100
@@ -468,6 +468,8 @@
folder_path = camel_imapx_mailbox_to_folder_path (mailbox_name,
separator);
fi = imapx_store_build_folder_info (store, folder_path,
(CamelFolderInfoFlags) flags);
+ camel_store_summary_info_unref (store->summary, (CamelStoreInfo *) si);
+
/* Figure out which signals to emit, if any. */
if (use_subscriptions || camel_imapx_namespace_get_category
(camel_imapx_mailbox_get_namespace (mailbox)) !=
CAMEL_IMAPX_NAMESPACE_PERSONAL) {
/* If we are honoring folder subscriptions, then
@@ -1218,6 +1220,8 @@
/* Takes ownership of the CamelFolderInfo. */
g_hash_table_insert (folder_info_results, g_strdup (mailbox_name), fi);
+
+ camel_store_summary_info_unref (imapx_store->summary, (CamelStoreInfo
*) si);
}
static gboolean
@@ -2258,15 +2262,15 @@
return success;
}
-static gboolean
-imapx_is_gmail_server (CamelService *service)
+gboolean
+camel_imapx_store_is_gmail_server (CamelIMAPXStore *imapx_store)
{
CamelSettings *settings;
gboolean is_gmail = FALSE;
- g_return_val_if_fail (CAMEL_IS_SERVICE (service), FALSE);
+ g_return_val_if_fail (CAMEL_IS_IMAPX_STORE (imapx_store), FALSE);
- settings = camel_service_ref_settings (service);
+ settings = camel_service_ref_settings (CAMEL_SERVICE (imapx_store));
if (CAMEL_IS_NETWORK_SETTINGS (settings)) {
gchar *host;
@@ -2536,7 +2540,7 @@
/* Skip changing Sent folder for GMail, because GMail stores sent
messages
automatically, thus it would make doubled copies on the server. */
- if (!imapx_is_gmail_server (CAMEL_SERVICE (store))) {
+ if (!camel_imapx_store_is_gmail_server (imapx_store)) {
imapx_check_initial_setup_group (imapx_store, finfo, save_setup,
CAMEL_IMAPX_LIST_ATTR_SENT,
CAMEL_STORE_SETUP_SENT_FOLDER, NULL, NULL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store.h
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store.h
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-store.h
2015-09-21 11:19:59.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-store.h
2017-01-18 11:15:14.000000000 +0100
@@ -75,6 +75,8 @@
};
GType camel_imapx_store_get_type (void);
+gboolean camel_imapx_store_is_gmail_server
+ (CamelIMAPXStore *store);
CamelIMAPXConnManager *
camel_imapx_store_get_conn_manager
(CamelIMAPXStore *store);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-tokenise.h
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-tokenise.h
---
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-tokenise.h
2016-10-11 22:38:53.000000000 +0200
+++
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-tokenise.h
2017-02-06 18:37:25.000000000 +0100
@@ -30,7 +30,6 @@
#line 3 "camel-imapx-tokens.txt"
struct _imapx_keyword {const gchar *name; camel_imapx_id_t id; };
-struct _imapx_keyword *imapx_tokenise_struct (register const char *str,
register unsigned int len);
#define TOTAL_KEYWORDS 58
#define MIN_WORD_LENGTH 2
@@ -93,137 +92,137 @@
static struct _imapx_keyword wordlist[] =
{
{""}, {""},
-#line 43 "camel-imapx-tokens.txt"
+#line 42 "camel-imapx-tokens.txt"
{"OK", IMAPX_OK},
{""}, {""},
-#line 31 "camel-imapx-tokens.txt"
+#line 30 "camel-imapx-tokens.txt"
{"INUSE", IMAPX_INUSE},
{""},
-#line 25 "camel-imapx-tokens.txt"
+#line 24 "camel-imapx-tokens.txt"
{"EXPUNGE", IMAPX_EXPUNGE},
-#line 22 "camel-imapx-tokens.txt"
+#line 21 "camel-imapx-tokens.txt"
{"ENVELOPE", IMAPX_ENVELOPE},
-#line 44 "camel-imapx-tokens.txt"
+#line 43 "camel-imapx-tokens.txt"
{"OVERQUOTA", IMAPX_OVERQUOTA},
-#line 50 "camel-imapx-tokens.txt"
+#line 49 "camel-imapx-tokens.txt"
{"READ-WRITE", IMAPX_READ_WRITE},
-#line 53 "camel-imapx-tokens.txt"
+#line 52 "camel-imapx-tokens.txt"
{"RFC822.SIZE", IMAPX_RFC822_SIZE},
-#line 30 "camel-imapx-tokens.txt"
+#line 29 "camel-imapx-tokens.txt"
{"INTERNALDATE", IMAPX_INTERNALDATE},
-#line 52 "camel-imapx-tokens.txt"
+#line 51 "camel-imapx-tokens.txt"
{"RFC822.HEADER", IMAPX_RFC822_HEADER},
{""},
-#line 6 "camel-imapx-tokens.txt"
+#line 5 "camel-imapx-tokens.txt"
{"ALERT", IMAPX_ALERT},
-#line 51 "camel-imapx-tokens.txt"
+#line 50 "camel-imapx-tokens.txt"
{"RECENT", IMAPX_RECENT},
-#line 39 "camel-imapx-tokens.txt"
+#line 38 "camel-imapx-tokens.txt"
{"NO", IMAPX_NO},
-#line 14 "camel-imapx-tokens.txt"
+#line 13 "camel-imapx-tokens.txt"
{"BYE", IMAPX_BYE},
-#line 57 "camel-imapx-tokens.txt"
+#line 56 "camel-imapx-tokens.txt"
{"TRYCREATE", IMAPX_TRYCREATE},
-#line 45 "camel-imapx-tokens.txt"
+#line 44 "camel-imapx-tokens.txt"
{"PARSE", IMAPX_PARSE},
-#line 54 "camel-imapx-tokens.txt"
+#line 53 "camel-imapx-tokens.txt"
{"RFC822.TEXT", IMAPX_RFC822_TEXT},
-#line 38 "camel-imapx-tokens.txt"
+#line 37 "camel-imapx-tokens.txt"
{"NEWNAME", IMAPX_NEWNAME},
{""},
-#line 37 "camel-imapx-tokens.txt"
+#line 36 "camel-imapx-tokens.txt"
{"NAMESPACE", IMAPX_NAMESPACE},
{""},
-#line 15 "camel-imapx-tokens.txt"
+#line 14 "camel-imapx-tokens.txt"
{"CANNOT", IMAPX_CANNOT},
{""},
-#line 13 "camel-imapx-tokens.txt"
+#line 12 "camel-imapx-tokens.txt"
{"BODYSTRUCTURE", IMAPX_BODYSTRUCTURE},
-#line 49 "camel-imapx-tokens.txt"
+#line 48 "camel-imapx-tokens.txt"
{"READ-ONLY", IMAPX_READ_ONLY},
{""}, {""},
-#line 24 "camel-imapx-tokens.txt"
+#line 23 "camel-imapx-tokens.txt"
{"EXPIRED", IMAPX_EXPIRED},
-#line 63 "camel-imapx-tokens.txt"
+#line 62 "camel-imapx-tokens.txt"
{"VANISHED", IMAPX_VANISHED},
-#line 10 "camel-imapx-tokens.txt"
+#line 9 "camel-imapx-tokens.txt"
{"APPENDUID", IMAPX_APPENDUID},
-#line 20 "camel-imapx-tokens.txt"
+#line 19 "camel-imapx-tokens.txt"
{"CORRUPTION", IMAPX_CORRUPTION},
-#line 41 "camel-imapx-tokens.txt"
+#line 40 "camel-imapx-tokens.txt"
{"NONEXISTENT", IMAPX_NONEXISTENT},
-#line 18 "camel-imapx-tokens.txt"
+#line 17 "camel-imapx-tokens.txt"
{"CONTACTADMIN", IMAPX_CONTACTADMIN},
-#line 26 "camel-imapx-tokens.txt"
+#line 25 "camel-imapx-tokens.txt"
{"EXPUNGEISSUED", IMAPX_EXPUNGEISSUED},
-#line 12 "camel-imapx-tokens.txt"
+#line 11 "camel-imapx-tokens.txt"
{"BODY", IMAPX_BODY},
-#line 16 "camel-imapx-tokens.txt"
+#line 15 "camel-imapx-tokens.txt"
{"CAPABILITY", IMAPX_CAPABILITY},
-#line 21 "camel-imapx-tokens.txt"
+#line 20 "camel-imapx-tokens.txt"
{"CLOSED", IMAPX_CLOSED},
-#line 19 "camel-imapx-tokens.txt"
+#line 18 "camel-imapx-tokens.txt"
{"COPYUID", IMAPX_COPYUID},
-#line 11 "camel-imapx-tokens.txt"
+#line 10 "camel-imapx-tokens.txt"
{"BAD", IMAPX_BAD},
-#line 9 "camel-imapx-tokens.txt"
- {"AUTHORIZATIONFAILED", IMAPX_AUTHORIZATIONFAILED},
#line 8 "camel-imapx-tokens.txt"
+ {"AUTHORIZATIONFAILED", IMAPX_AUTHORIZATIONFAILED},
+#line 7 "camel-imapx-tokens.txt"
{"AUTHENTICATIONFAILED", IMAPX_AUTHENTICATIONFAILED},
-#line 60 "camel-imapx-tokens.txt"
+#line 59 "camel-imapx-tokens.txt"
{"UNAVAILABLE", IMAPX_UNAVAILABLE},
{""},
-#line 40 "camel-imapx-tokens.txt"
+#line 39 "camel-imapx-tokens.txt"
{"NOMODSEQ", IMAPX_NOMODSEQ},
-#line 33 "camel-imapx-tokens.txt"
- {"LIST", IMAPX_LIST},
#line 32 "camel-imapx-tokens.txt"
+ {"LIST", IMAPX_LIST},
+#line 31 "camel-imapx-tokens.txt"
{"LIMIT", IMAPX_LIMIT},
-#line 23 "camel-imapx-tokens.txt"
+#line 22 "camel-imapx-tokens.txt"
{"EXISTS", IMAPX_EXISTS},
-#line 62 "camel-imapx-tokens.txt"
+#line 61 "camel-imapx-tokens.txt"
{"UIDNEXT", IMAPX_UIDNEXT},
{""},
-#line 34 "camel-imapx-tokens.txt"
+#line 33 "camel-imapx-tokens.txt"
{"LSUB", IMAPX_LSUB},
-#line 48 "camel-imapx-tokens.txt"
+#line 47 "camel-imapx-tokens.txt"
{"PRIVACYREQUIRED", IMAPX_PRIVACYREQUIRED},
-#line 61 "camel-imapx-tokens.txt"
+#line 60 "camel-imapx-tokens.txt"
{"UNSEEN", IMAPX_UNSEEN},
-#line 47 "camel-imapx-tokens.txt"
+#line 46 "camel-imapx-tokens.txt"
{"PREAUTH", IMAPX_PREAUTH},
-#line 7 "camel-imapx-tokens.txt"
+#line 6 "camel-imapx-tokens.txt"
{"ALREADYEXISTS", IMAPX_ALREADYEXISTS},
-#line 17 "camel-imapx-tokens.txt"
+#line 16 "camel-imapx-tokens.txt"
{"CLIENTBUG", IMAPX_CLIENTBUG},
-#line 27 "camel-imapx-tokens.txt"
+#line 26 "camel-imapx-tokens.txt"
{"FETCH", IMAPX_FETCH},
-#line 42 "camel-imapx-tokens.txt"
+#line 41 "camel-imapx-tokens.txt"
{"NOPERM", IMAPX_NOPERM},
{""},
-#line 58 "camel-imapx-tokens.txt"
+#line 57 "camel-imapx-tokens.txt"
{"UID", IMAPX_UID},
{""}, {""},
-#line 59 "camel-imapx-tokens.txt"
+#line 58 "camel-imapx-tokens.txt"
{"UIDVALIDITY", IMAPX_UIDVALIDITY},
{""}, {""}, {""},
-#line 28 "camel-imapx-tokens.txt"
+#line 27 "camel-imapx-tokens.txt"
{"FLAGS", IMAPX_FLAGS},
-#line 36 "camel-imapx-tokens.txt"
+#line 35 "camel-imapx-tokens.txt"
{"MODSEQ", IMAPX_MODSEQ},
{""},
-#line 29 "camel-imapx-tokens.txt"
+#line 28 "camel-imapx-tokens.txt"
{"HIGHESTMODSEQ", IMAPX_HIGHESTMODSEQ},
-#line 46 "camel-imapx-tokens.txt"
+#line 45 "camel-imapx-tokens.txt"
{"PERMANENTFLAGS", IMAPX_PERMANENTFLAGS},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 35 "camel-imapx-tokens.txt"
+#line 34 "camel-imapx-tokens.txt"
{"MESSAGES", IMAPX_MESSAGES},
-#line 55 "camel-imapx-tokens.txt"
+#line 54 "camel-imapx-tokens.txt"
{"SERVERBUG", IMAPX_SERVERBUG},
{""},
-#line 56 "camel-imapx-tokens.txt"
+#line 55 "camel-imapx-tokens.txt"
{"STATUS", IMAPX_STATUS}
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-tokens.txt
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-tokens.txt
---
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-tokens.txt
2014-03-24 10:07:52.000000000 +0100
+++
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-tokens.txt
2017-02-06 18:36:09.000000000 +0100
@@ -1,7 +1,6 @@
/* This contains all of the keywords we care about. These
can be converted to an id very efficiently */
struct _imapx_keyword {const gchar *name; camel_imapx_id_t id; };
-struct _imapx_keyword *imapx_tokenise_struct (register const char *str,
register unsigned int len);
%%
ALERT, IMAPX_ALERT
ALREADYEXISTS, IMAPX_ALREADYEXISTS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-utils.c
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-utils.c
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-utils.c
2016-09-19 10:00:48.000000000 +0200
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-utils.c
2017-02-10 16:26:43.000000000 +0100
@@ -2391,6 +2391,7 @@
struct _status_info *
imapx_parse_status (CamelIMAPXInputStream *stream,
CamelIMAPXMailbox *mailbox,
+ gboolean is_ok_no_bad,
GCancellable *cancellable,
GError **error)
{
@@ -2503,7 +2504,9 @@
break;
case IMAPX_UNSEEN:
- success = imapx_parse_status_unseen (
+ /* Ignore UNSEEN in OK/NO/BAD, because it's not
count of unseen
+ messages, but the sequence number of the
first unseen message. */
+ success = is_ok_no_bad ||
imapx_parse_status_unseen (
stream, mailbox, cancellable, error);
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-utils.h
new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-utils.h
--- old/evolution-data-server-3.22.4/camel/providers/imapx/camel-imapx-utils.h
2016-03-21 08:34:20.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/providers/imapx/camel-imapx-utils.h
2017-02-10 16:26:43.000000000 +0100
@@ -300,6 +300,7 @@
struct _status_info *
imapx_parse_status (CamelIMAPXInputStream *stream,
CamelIMAPXMailbox *mailbox,
+ gboolean is_ok_no_bad,
GCancellable *cancellable,
GError **error);
struct _status_info *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/nntp/camel-nntp-stream.c
new/evolution-data-server-3.22.5/camel/providers/nntp/camel-nntp-stream.c
--- old/evolution-data-server-3.22.4/camel/providers/nntp/camel-nntp-stream.c
2015-03-23 07:41:04.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/providers/nntp/camel-nntp-stream.c
2017-02-13 10:19:44.000000000 +0100
@@ -60,6 +60,8 @@
g_free (stream->buf);
g_free (stream->linebuf);
+ g_rec_mutex_clear (&stream->lock);
+
/* Chain up to parent's finalize () method. */
G_OBJECT_CLASS (camel_nntp_stream_parent_class)->finalize (object);
}
@@ -111,8 +113,12 @@
guchar *p, *e, c;
gint state;
- if (is->mode != CAMEL_NNTP_STREAM_DATA || n == 0)
+ g_rec_mutex_lock (&is->lock);
+
+ if (is->mode != CAMEL_NNTP_STREAM_DATA || n == 0) {
+ g_rec_mutex_unlock (&is->lock);
return 0;
+ }
o = buffer;
oe = buffer + n;
@@ -127,8 +133,10 @@
case 0: /* start of line, always read at least 3 chars */
while (e - p < 3) {
is->ptr = p;
- if (nntp_stream_fill (is, cancellable, error) == -1)
+ if (nntp_stream_fill (is, cancellable, error) == -1) {
+ g_rec_mutex_unlock (&is->lock);
return -1;
+ }
p = is->ptr;
e = is->end;
}
@@ -137,6 +145,7 @@
is->ptr = p + 3;
is->mode = CAMEL_NNTP_STREAM_EOD;
is->state = 0;
+ g_rec_mutex_unlock (&is->lock);
return o - buffer;
}
p++;
@@ -150,8 +159,10 @@
/* end of input sentinal check */
if (p > e) {
is->ptr = e;
- if (nntp_stream_fill (is, cancellable,
error) == -1)
+ if (nntp_stream_fill (is, cancellable,
error) == -1) {
+ g_rec_mutex_unlock (&is->lock);
return -1;
+ }
p = is->ptr;
e = is->end;
} else {
@@ -169,6 +180,8 @@
is->ptr = p;
is->state = state;
+ g_rec_mutex_unlock (&is->lock);
+
return o - buffer;
}
@@ -180,8 +193,13 @@
GError **error)
{
CamelNNTPStream *is = (CamelNNTPStream *) stream;
+ gssize written;
+
+ g_rec_mutex_lock (&is->lock);
+ written = camel_stream_write (is->source, buffer, n, cancellable,
error);
+ g_rec_mutex_unlock (&is->lock);
- return camel_stream_write (is->source, buffer, n, cancellable, error);
+ return written;
}
static gint
@@ -241,6 +259,8 @@
is->state = 0;
is->mode = CAMEL_NNTP_STREAM_LINE;
+
+ g_rec_mutex_init (&is->lock);
}
CamelNNTPStream *
@@ -270,7 +290,10 @@
g_return_val_if_fail (data != NULL, -1);
g_return_val_if_fail (len != NULL, -1);
+ g_rec_mutex_lock (&is->lock);
+
if (is->mode == CAMEL_NNTP_STREAM_EOD) {
+ g_rec_mutex_unlock (&is->lock);
*data = is->linebuf;
*len = 0;
return 0;
@@ -287,8 +310,10 @@
/* need at least 3 chars in buffer */
while (e - p < 3) {
is->ptr = p;
- if (nntp_stream_fill (is, cancellable, error) == -1)
+ if (nntp_stream_fill (is, cancellable, error) == -1) {
+ g_rec_mutex_unlock (&is->lock);
return -1;
+ }
p = is->ptr;
e = is->end;
}
@@ -304,6 +329,8 @@
dd (printf ("NNTP_STREAM_LINE (END)\n"));
+ g_rec_mutex_unlock (&is->lock);
+
return 0;
}
p++;
@@ -317,8 +344,10 @@
/* sentinal? */
if (p> e) {
is->ptr = e;
- if (nntp_stream_fill (is, cancellable,
error) == -1)
+ if (nntp_stream_fill (is, cancellable,
error) == -1) {
+ g_rec_mutex_unlock (&is->lock);
return -1;
+ }
p = is->ptr;
e = is->end;
} else {
@@ -327,6 +356,8 @@
*len = o - is->linebuf;
*o = 0;
+ g_rec_mutex_unlock (&is->lock);
+
dd (printf ("NNTP_STREAM_LINE (%d):
'%s'\n", *len, *data));
return 1;
@@ -344,6 +375,8 @@
oe = is->lineend - 1;
o = is->linebuf + oldlen;
}
+
+ g_rec_mutex_unlock (&is->lock);
}
/* returns -1 on error, 0 if last lot of data, >0 if more remaining */
@@ -363,11 +396,15 @@
*len = 0;
+ g_rec_mutex_lock (&is->lock);
+
max = is->end - is->ptr;
if (max == 0) {
max = nntp_stream_fill (is, cancellable, error);
- if (max <= 0)
+ if (max <= 0) {
+ g_rec_mutex_unlock (&is->lock);
return max;
+ }
}
*start = is->ptr;
@@ -378,6 +415,8 @@
*len = max;
is->ptr += max;
+ g_rec_mutex_unlock (&is->lock);
+
return end == NULL ? 1 : 0;
}
@@ -407,10 +446,15 @@
*len = 0;
- if (is->mode == CAMEL_NNTP_STREAM_EOD)
+ g_rec_mutex_lock (&is->lock);
+
+ if (is->mode == CAMEL_NNTP_STREAM_EOD) {
+ g_rec_mutex_unlock (&is->lock);
return 0;
+ }
if (is->mode == CAMEL_NNTP_STREAM_LINE) {
+ g_rec_mutex_unlock (&is->lock);
g_warning ("nntp_stream reading data in line mode\n");
return 0;
}
@@ -421,8 +465,10 @@
while (e - p < 3) {
is->ptr = p;
- if (nntp_stream_fill (is, cancellable, error) == -1)
+ if (nntp_stream_fill (is, cancellable, error) == -1) {
+ g_rec_mutex_unlock (&is->lock);
return -1;
+ }
p = is->ptr;
e = is->end;
}
@@ -440,6 +486,7 @@
*start = s;
is->mode = CAMEL_NNTP_STREAM_EOD;
is->state = 0;
+ g_rec_mutex_unlock (&is->lock);
return 0;
}
@@ -454,6 +501,7 @@
*len = p-s;
*start = s;
is->state = 1;
+ g_rec_mutex_unlock (&is->lock);
return 1;
}
@@ -479,6 +527,7 @@
*len = p-s;
*start = s;
+ g_rec_mutex_unlock (&is->lock);
+
return 1;
}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/camel/providers/nntp/camel-nntp-stream.h
new/evolution-data-server-3.22.5/camel/providers/nntp/camel-nntp-stream.h
--- old/evolution-data-server-3.22.4/camel/providers/nntp/camel-nntp-stream.h
2015-03-23 07:41:04.000000000 +0100
+++ new/evolution-data-server-3.22.5/camel/providers/nntp/camel-nntp-stream.h
2017-02-13 10:19:44.000000000 +0100
@@ -61,6 +61,8 @@
guchar *buf, *ptr, *end;
guchar *linebuf, *lineptr, *lineend;
+
+ GRecMutex lock;
};
struct _CamelNNTPStreamClass {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/evolution-data-server-3.22.4/configure
new/evolution-data-server-3.22.5/configure
--- old/evolution-data-server-3.22.4/configure 2017-01-16 12:39:11.000000000
+0100
+++ new/evolution-data-server-3.22.5/configure 2017-02-13 12:40:38.000000000
+0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for evolution-data-server 3.22.4.
+# Generated by GNU Autoconf 2.69 for evolution-data-server 3.22.5.
#
# Report bugs to
<http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server>.
#
@@ -651,8 +651,8 @@
# Identity of this package.
PACKAGE_NAME='evolution-data-server'
PACKAGE_TARNAME='evolution-data-server'
-PACKAGE_VERSION='3.22.4'
-PACKAGE_STRING='evolution-data-server 3.22.4'
+PACKAGE_VERSION='3.22.5'
+PACKAGE_STRING='evolution-data-server 3.22.5'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server'
PACKAGE_URL=''
@@ -1788,7 +1788,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures evolution-data-server 3.22.4 to adapt to many kinds of
systems.
+\`configure' configures evolution-data-server 3.22.5 to adapt to many kinds of
systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1859,7 +1859,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of evolution-data-server
3.22.4:";;
+ short | recursive ) echo "Configuration of evolution-data-server
3.22.5:";;
esac
cat <<\_ACEOF
@@ -2138,7 +2138,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-evolution-data-server configure 3.22.4
+evolution-data-server configure 3.22.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by evolution-data-server $as_me 3.22.4, which was
+It was created by evolution-data-server $as_me 3.22.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3587,7 +3587,7 @@
# Define the identity of the package.
PACKAGE='evolution-data-server'
- VERSION='3.22.4'
+ VERSION='3.22.5'
cat >>confdefs.h <<_ACEOF
@@ -3888,7 +3888,7 @@
EDS_MAJOR_VERSION=3
EDS_MINOR_VERSION=22
-EDS_MICRO_VERSION=4
+EDS_MICRO_VERSION=5
@@ -27987,7 +27987,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by evolution-data-server $as_me 3.22.4, which was
+This file was extended by evolution-data-server $as_me 3.22.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28053,7 +28053,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-evolution-data-server config.status 3.22.4
+evolution-data-server config.status 3.22.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/evolution-data-server-3.22.4/configure.ac
new/evolution-data-server-3.22.5/configure.ac
--- old/evolution-data-server-3.22.4/configure.ac 2016-12-12
15:51:20.000000000 +0100
+++ new/evolution-data-server-3.22.5/configure.ac 2017-01-16
12:47:11.000000000 +0100
@@ -2,7 +2,7 @@
dnl Evolution-Data-Server version
m4_define([eds_major_version], [3])
m4_define([eds_minor_version], [22])
-m4_define([eds_micro_version], [4])
+m4_define([eds_micro_version], [5])
m4_define([eds_version],
[eds_major_version.eds_minor_version.eds_micro_version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelFolder.html
new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelFolder.html
--- old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelFolder.html
2017-01-16 12:44:23.000000000 +0100
+++ new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelFolder.html
2017-02-13 12:46:27.000000000 +0100
@@ -525,6 +525,14 @@
</tr>
<tr>
<td class="function_type">
+<a class="link" href="CamelMimeMessage.html" title="CamelMimeMessage"><span
class="returnvalue">CamelMimeMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="CamelFolder.html#camel-folder-get-message-cached"
title="camel_folder_get_message_cached ()">camel_folder_get_message_cached</a>
<span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<a class="link" href="CamelFolder.html#CamelFolderQuotaInfo"><span
class="returnvalue">CamelFolderQuotaInfo</span></a> *
</td>
<td class="function_name">
@@ -3010,6 +3018,56 @@
</div>
<hr>
<div class="refsect2">
+<a
name="camel-folder-get-message-cached"></a><h3>camel_folder_get_message_cached
()</h3>
+<pre class="programlisting"><a class="link" href="CamelMimeMessage.html"
title="CamelMimeMessage"><span class="returnvalue">CamelMimeMessage</span></a> *
+camel_folder_get_message_cached (<em class="parameter"><code><a class="link"
href="CamelFolder.html" title="CamelFolder"><span
class="type">CamelFolder</span></a> *folder</code></em>,
+ <em class="parameter"><code>const <a
href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span
class="type">gchar</span></a> *message_uid</code></em>,
+ <em class="parameter"><code><a
href="/usr/share/gtk-doc/html/gioGCancellable.html#GCancellable-struct"><span
class="type">GCancellable</span></a> *cancellable</code></em>);</pre>
+<p>Gets the message corresponding to <em
class="parameter"><code>message_uid</code></em>
+ from the <em class="parameter"><code>folder</code></em>
+ cache,
+if available locally. This should not do any network I/O, only check
+if message is already downloaded and return it quickly, not being
+blocked by the folder's lock. Returning NULL is not considered as
+an error, it just means that the message is still to-be-downloaded.</p>
+<p>Note: This function is called automatically within <a class="link"
href="CamelFolder.html#camel-folder-get-message-sync"
title="camel_folder_get_message_sync ()"><code
class="function">camel_folder_get_message_sync()</code></a>.</p>
+<div class="refsect3">
+<a name="camel-folder-get-message-cached.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%"
border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>folder</p></td>
+<td class="parameter_description"><p>a <a class="link" href="CamelFolder.html"
title="CamelFolder"><span class="type">CamelFolder</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>message_uid</p></td>
+<td class="parameter_description"><p>the message UID</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>cancellable</p></td>
+<td class="parameter_description"><p>optional <a
href="/usr/share/gtk-doc/html/gioGCancellable.html#GCancellable-struct"><span
class="type">GCancellable</span></a> object, or <a
href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code
class="literal">NULL</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="camel-folder-get-message-cached.returns"></a><h4>Returns</h4>
+<p> a cached <a class="link" href="CamelMimeMessage.html"
title="CamelMimeMessage"><span class="type">CamelMimeMessage</span></a>
corresponding
+to the requested UID. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is
done."><span class="acronym">transfer full</span></acronym>][<acronym
title="NULL may be passed as the value in, out, in-out; or as a return
value."><span class="acronym">nullable</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 3.22.5</p>
+</div>
+<hr>
+<div class="refsect2">
<a
name="camel-folder-get-quota-info-sync"></a><h3>camel_folder_get_quota_info_sync
()</h3>
<pre class="programlisting"><a class="link"
href="CamelFolder.html#CamelFolderQuotaInfo"><span
class="returnvalue">CamelFolderQuotaInfo</span></a> *
camel_folder_get_quota_info_sync (<em class="parameter"><code><a class="link"
href="CamelFolder.html" title="CamelFolder"><span
class="type">CamelFolder</span></a> *folder</code></em>,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelFolderSearch.html
new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelFolderSearch.html
---
old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelFolderSearch.html
2017-01-16 12:44:23.000000000 +0100
+++
new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelFolderSearch.html
2017-02-13 12:46:27.000000000 +0100
@@ -53,6 +53,22 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
+<a class="link"
href="CamelFolderSearch.html#camel-folder-search-set-only-cached-messages"
title="camel_folder_search_set_only_cached_messages
()">camel_folder_search_set_only_cached_messages</a> <span
class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="CamelIMAPXServer.html#gboolean" title="gboolean
()"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link"
href="CamelFolderSearch.html#camel-folder-search-get-only-cached-messages"
title="camel_folder_search_get_only_cached_messages
()">camel_folder_search_get_only_cached_messages</a> <span
class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
<a class="link" href="CamelFolderSearch.html#camel-folder-search-set-folder"
title="camel_folder_search_set_folder ()">camel_folder_search_set_folder</a>
<span class="c_punctuation">()</span>
</td>
</tr>
@@ -143,6 +159,69 @@
</div>
<hr>
<div class="refsect2">
+<a
name="camel-folder-search-set-only-cached-messages"></a><h3>camel_folder_search_set_only_cached_messages
()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+camel_folder_search_set_only_cached_messages
+ (<em class="parameter"><code><a class="link"
href="CamelFolderSearch.html" title="CamelFolderSearch"><span
class="type">CamelFolderSearch</span></a> *search</code></em>,
+ <em class="parameter"><code><a class="link"
href="CamelIMAPXServer.html#gboolean" title="gboolean ()"><span
class="type">gboolean</span></a> only_cached_messages</code></em>);</pre>
+<p>Sets whether only locally cached messages can be searched. The default
+value is <a
href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code
class="literal">FALSE</code></a>, which means that when a message is required
and it is
+not available locally, then it is downloaded from the server, if possible.</p>
+<div class="refsect3">
+<a
name="camel-folder-search-set-only-cached-messages.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%"
border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>search</p></td>
+<td class="parameter_description"><p>a <a class="link"
href="CamelFolderSearch.html" title="CamelFolderSearch"><span
class="type">CamelFolderSearch</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>only_cached_messages</p></td>
+<td class="parameter_description"><p>a value to set</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 3.22.5</p>
+</div>
+<hr>
+<div class="refsect2">
+<a
name="camel-folder-search-get-only-cached-messages"></a><h3>camel_folder_search_get_only_cached_messages
()</h3>
+<pre class="programlisting"><a class="link"
href="CamelIMAPXServer.html#gboolean" title="gboolean ()"><span
class="returnvalue">gboolean</span></a>
+camel_folder_search_get_only_cached_messages
+ (<em class="parameter"><code><a class="link"
href="CamelFolderSearch.html" title="CamelFolderSearch"><span
class="type">CamelFolderSearch</span></a> *search</code></em>);</pre>
+<div class="refsect3">
+<a
name="camel-folder-search-get-only-cached-messages.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%"
border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>search</p></td>
+<td class="parameter_description"><p>a <a class="link"
href="CamelFolderSearch.html" title="CamelFolderSearch"><span
class="type">CamelFolderSearch</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a
name="camel-folder-search-get-only-cached-messages.returns"></a><h4>Returns</h4>
+<p> Whether only cached messages can be searched. See
+<a class="link"
href="CamelFolderSearch.html#camel-folder-search-set-only-cached-messages"
title="camel_folder_search_set_only_cached_messages ()"><code
class="function">camel_folder_search_set_only_cached_messages()</code></a> for
more
+information what it means.</p>
+</div>
+<p class="since">Since: 3.22.5</p>
+</div>
+<hr>
+<div class="refsect2">
<a
name="camel-folder-search-set-folder"></a><h3>camel_folder_search_set_folder
()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
camel_folder_search_set_folder (<em class="parameter"><code><a class="link"
href="CamelFolderSearch.html" title="CamelFolderSearch"><span
class="type">CamelFolderSearch</span></a> *search</code></em>,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelIMAPXStore.html
new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelIMAPXStore.html
---
old/evolution-data-server-3.22.4/docs/reference/camel/html/CamelIMAPXStore.html
2017-01-16 12:44:23.000000000 +0100
+++
new/evolution-data-server-3.22.5/docs/reference/camel/html/CamelIMAPXStore.html
2017-02-13 12:46:27.000000000 +0100
@@ -44,6 +44,14 @@
<tbody>
<tr>
<td class="function_type">
+<a class="link" href="CamelIMAPXServer.html#gboolean" title="gboolean
()"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="CamelIMAPXStore.html#camel-imapx-store-is-gmail-server"
title="camel_imapx_store_is_gmail_server
()">camel_imapx_store_is_gmail_server</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<a class="link" href="CamelIMAPXConnManager.html"
title="CamelIMAPXConnManager"><span
class="returnvalue">CamelIMAPXConnManager</span></a> *
</td>
<td class="function_name">
@@ -216,6 +224,12 @@
<div class="refsect1">
<a name="CamelIMAPXStore.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
+<a
name="camel-imapx-store-is-gmail-server"></a><h3>camel_imapx_store_is_gmail_server
()</h3>
+<pre class="programlisting"><a class="link"
href="CamelIMAPXServer.html#gboolean" title="gboolean ()"><span
class="returnvalue">gboolean</span></a>
+camel_imapx_store_is_gmail_server (<em class="parameter"><code><a class="link"
href="CamelIMAPXStore.html" title="CamelIMAPXStore"><span
class="type">CamelIMAPXStore</span></a> *store</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
<a
name="camel-imapx-store-get-conn-manager"></a><h3>camel_imapx_store_get_conn_manager
()</h3>
<pre class="programlisting"><a class="link" href="CamelIMAPXConnManager.html"
title="CamelIMAPXConnManager"><span
class="returnvalue">CamelIMAPXConnManager</span></a> *
camel_imapx_store_get_conn_manager (<em class="parameter"><code><a
class="link" href="CamelIMAPXStore.html" title="CamelIMAPXStore"><span
class="type">CamelIMAPXStore</span></a> *store</code></em>);</pre>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/camel/html/api-index-full.html
new/evolution-data-server-3.22.5/docs/reference/camel/html/api-index-full.html
---
old/evolution-data-server-3.22.4/docs/reference/camel/html/api-index-full.html
2017-01-16 12:44:23.000000000 +0100
+++
new/evolution-data-server-3.22.5/docs/reference/camel/html/api-index-full.html
2017-02-13 12:46:27.000000000 +0100
@@ -1581,6 +1581,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="CamelFolder.html#camel-folder-get-message-cached"
title="camel_folder_get_message_cached ()">camel_folder_get_message_cached</a>,
function in <a class="link" href="CamelFolder.html"
title="CamelFolder">CamelFolder</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="CamelFolder.html#camel-folder-get-message-count"
title="camel_folder_get_message_count ()">camel_folder_get_message_count</a>,
function in <a class="link" href="CamelFolder.html"
title="CamelFolder">CamelFolder</a>
</dt>
<dd></dd>
@@ -1741,6 +1745,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link"
href="CamelFolderSearch.html#camel-folder-search-get-only-cached-messages"
title="camel_folder_search_get_only_cached_messages
()">camel_folder_search_get_only_cached_messages</a>, function in <a
class="link" href="CamelFolderSearch.html"
title="CamelFolderSearch">CamelFolderSearch</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="CamelFolderSearch.html#camel-folder-search-new"
title="camel_folder_search_new ()">camel_folder_search_new</a>, function in <a
class="link" href="CamelFolderSearch.html"
title="CamelFolderSearch">CamelFolderSearch</a>
</dt>
<dd></dd>
@@ -1757,6 +1765,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link"
href="CamelFolderSearch.html#camel-folder-search-set-only-cached-messages"
title="camel_folder_search_set_only_cached_messages
()">camel_folder_search_set_only_cached_messages</a>, function in <a
class="link" href="CamelFolderSearch.html"
title="CamelFolderSearch">CamelFolderSearch</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="CamelFolderSearch.html#camel-folder-search-set-summary"
title="camel_folder_search_set_summary ()">camel_folder_search_set_summary</a>,
function in <a class="link" href="CamelFolderSearch.html"
title="CamelFolderSearch">CamelFolderSearch</a>
</dt>
<dd></dd>
@@ -3728,6 +3740,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="CamelIMAPXStore.html#camel-imapx-store-is-gmail-server"
title="camel_imapx_store_is_gmail_server
()">camel_imapx_store_is_gmail_server</a>, function in <a class="link"
href="CamelIMAPXStore.html" title="CamelIMAPXStore">CamelIMAPXStore</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="CamelIMAPXStore.html#camel-imapx-store-list-mailboxes"
title="camel_imapx_store_list_mailboxes
()">camel_imapx_store_list_mailboxes</a>, function in <a class="link"
href="CamelIMAPXStore.html" title="CamelIMAPXStore">CamelIMAPXStore</a>
</dt>
<dd></dd>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/camel/html/camel.devhelp2
new/evolution-data-server-3.22.5/docs/reference/camel/html/camel.devhelp2
--- old/evolution-data-server-3.22.4/docs/reference/camel/html/camel.devhelp2
2017-01-16 12:44:23.000000000 +0100
+++ new/evolution-data-server-3.22.5/docs/reference/camel/html/camel.devhelp2
2017-02-13 12:46:27.000000000 +0100
@@ -768,6 +768,7 @@
<keyword type="function" name="camel_folder_get_message_sync ()"
link="CamelFolder.html#camel-folder-get-message-sync" since="3.0"/>
<keyword type="function" name="camel_folder_get_message ()"
link="CamelFolder.html#camel-folder-get-message" since="3.0"/>
<keyword type="function" name="camel_folder_get_message_finish ()"
link="CamelFolder.html#camel-folder-get-message-finish" since="3.0"/>
+ <keyword type="function" name="camel_folder_get_message_cached ()"
link="CamelFolder.html#camel-folder-get-message-cached" since="3.22.5"/>
<keyword type="function" name="camel_folder_get_quota_info_sync ()"
link="CamelFolder.html#camel-folder-get-quota-info-sync" since="3.2"/>
<keyword type="function" name="camel_folder_get_quota_info ()"
link="CamelFolder.html#camel-folder-get-quota-info" since="3.2"/>
<keyword type="function" name="camel_folder_get_quota_info_finish ()"
link="CamelFolder.html#camel-folder-get-quota-info-finish" since="3.2"/>
@@ -815,6 +816,8 @@
<keyword type="signal" name="The “deleted” signal"
link="CamelFolder.html#CamelFolder-deleted"/>
<keyword type="signal" name="The “renamed” signal"
link="CamelFolder.html#CamelFolder-renamed"/>
<keyword type="function" name="camel_folder_search_new ()"
link="CamelFolderSearch.html#camel-folder-search-new"/>
+ <keyword type="function"
name="camel_folder_search_set_only_cached_messages ()"
link="CamelFolderSearch.html#camel-folder-search-set-only-cached-messages"
since="3.22.5"/>
+ <keyword type="function"
name="camel_folder_search_get_only_cached_messages ()"
link="CamelFolderSearch.html#camel-folder-search-get-only-cached-messages"
since="3.22.5"/>
<keyword type="function" name="camel_folder_search_set_folder ()"
link="CamelFolderSearch.html#camel-folder-search-set-folder"/>
<keyword type="function" name="camel_folder_search_set_summary ()"
link="CamelFolderSearch.html#camel-folder-search-set-summary"/>
<keyword type="function" name="camel_folder_search_set_body_index ()"
link="CamelFolderSearch.html#camel-folder-search-set-body-index"/>
@@ -2053,6 +2056,7 @@
<keyword type="property" name="The “use-real-trash-path” property"
link="CamelIMAPXSettings.html#CamelIMAPXSettings--use-real-trash-path"/>
<keyword type="property" name="The “use-shell-command” property"
link="CamelIMAPXSettings.html#CamelIMAPXSettings--use-shell-command"/>
<keyword type="property" name="The “use-subscriptions” property"
link="CamelIMAPXSettings.html#CamelIMAPXSettings--use-subscriptions"/>
+ <keyword type="function" name="camel_imapx_store_is_gmail_server ()"
link="CamelIMAPXStore.html#camel-imapx-store-is-gmail-server"/>
<keyword type="function" name="camel_imapx_store_get_conn_manager ()"
link="CamelIMAPXStore.html#camel-imapx-store-get-conn-manager"/>
<keyword type="function" name="camel_imapx_store_set_connecting_server ()"
link="CamelIMAPXStore.html#camel-imapx-store-set-connecting-server"/>
<keyword type="function"
name="camel_imapx_store_is_connecting_concurrent_connection ()"
link="CamelIMAPXStore.html#camel-imapx-store-is-connecting-concurrent-connection"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/eds/html/eds-eds-version.html
new/evolution-data-server-3.22.5/docs/reference/eds/html/eds-eds-version.html
---
old/evolution-data-server-3.22.4/docs/reference/eds/html/eds-eds-version.html
2017-01-16 12:44:22.000000000 +0100
+++
new/evolution-data-server-3.22.5/docs/reference/eds/html/eds-eds-version.html
2017-02-13 12:46:27.000000000 +0100
@@ -204,7 +204,7 @@
<hr>
<div class="refsect2">
<a name="EDS-MICRO-VERSION:CAPS"></a><h3>EDS_MICRO_VERSION</h3>
-<pre class="programlisting">#define EDS_MICRO_VERSION 4
+<pre class="programlisting">#define EDS_MICRO_VERSION 5
</pre>
<p>The micro version number of the Evolution-Data-Server library. Like
<a class="link" href="eds-eds-version.html#eds-micro-version"
title="eds_micro_version"><code
class="function">eds_micro_version()</code></a>, but from the headers used at
application compile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/eds/html/index.html
new/evolution-data-server-3.22.5/docs/reference/eds/html/index.html
--- old/evolution-data-server-3.22.4/docs/reference/eds/html/index.html
2017-01-16 12:44:22.000000000 +0100
+++ new/evolution-data-server-3.22.5/docs/reference/eds/html/index.html
2017-02-13 12:46:27.000000000 +0100
@@ -15,7 +15,7 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2"
cellspacing="0"><tr><th valign="middle"><p class="title">Evolution-Data-Server
Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Reference Manual for evolution-data-server 3.22.4
+<div><p class="releaseinfo">Reference Manual for evolution-data-server 3.22.5
</p></div>
<div><div class="abstract">
<p class="title"><b>Abstract</b></p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/docs/reference/eds/version.xml
new/evolution-data-server-3.22.5/docs/reference/eds/version.xml
--- old/evolution-data-server-3.22.4/docs/reference/eds/version.xml
2017-01-16 12:39:25.000000000 +0100
+++ new/evolution-data-server-3.22.5/docs/reference/eds/version.xml
2017-02-13 12:40:53.000000000 +0100
@@ -1 +1 @@
-evolution-data-server 3.22.4
+evolution-data-server 3.22.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/libedataserver/e-source-credentials-provider-impl-google.c
new/evolution-data-server-3.22.5/libedataserver/e-source-credentials-provider-impl-google.c
---
old/evolution-data-server-3.22.4/libedataserver/e-source-credentials-provider-impl-google.c
2016-10-10 10:04:28.000000000 +0200
+++
new/evolution-data-server-3.22.5/libedataserver/e-source-credentials-provider-impl-google.c
2017-02-06 11:19:38.000000000 +0100
@@ -398,10 +398,17 @@
secret = e_named_parameters_get (credentials,
E_SOURCE_CREDENTIAL_GOOGLE_SECRET);
if (!secret) {
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
_("Failed to get Google secret from credentials"));
+ if (error && !*error)
+ g_set_error_literal (error, G_IO_ERROR,
G_IO_ERROR_FAILED, _("Failed to get Google secret from credentials"));
+
return FALSE;
}
+ /* The caller can have set an error from the secret lookup,
+ which are propagated, but otherwise a success is reported. */
+ if (error && *error)
+ g_clear_error (error);
+
if (!e_source_credentials_google_util_decode_from_secret (secret,
E_GOOGLE_SECRET_REFRESH_TOKEN, &refresh_token, NULL) ||
!refresh_token || !*refresh_token) {
g_free (refresh_token);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/libedataserver/eds-version.h
new/evolution-data-server-3.22.5/libedataserver/eds-version.h
--- old/evolution-data-server-3.22.4/libedataserver/eds-version.h
2017-01-16 12:39:24.000000000 +0100
+++ new/evolution-data-server-3.22.5/libedataserver/eds-version.h
2017-02-13 12:40:52.000000000 +0100
@@ -49,7 +49,7 @@
* time, rather than from the library linked against at application run
* time.
**/
-#define EDS_MICRO_VERSION 4
+#define EDS_MICRO_VERSION 5
/**
* EDS_CHECK_VERSION:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/libedataserverui/e-webdav-discover-widget.c
new/evolution-data-server-3.22.5/libedataserverui/e-webdav-discover-widget.c
---
old/evolution-data-server-3.22.4/libedataserverui/e-webdav-discover-widget.c
2016-12-16 09:52:26.000000000 +0100
+++
new/evolution-data-server-3.22.5/libedataserverui/e-webdav-discover-widget.c
2017-02-06 11:19:38.000000000 +0100
@@ -723,6 +723,7 @@
rd = NULL;
} else if (g_cancellable_is_cancelled (rd->cancellable) ||
(!g_error_matches (local_error, G_IO_ERROR,
G_IO_ERROR_PERMISSION_DENIED) &&
+ !g_error_matches (local_error, G_IO_ERROR,
G_IO_ERROR_NOT_FOUND) &&
!g_error_matches (local_error, SOUP_HTTP_ERROR,
SOUP_STATUS_UNAUTHORIZED) &&
!g_error_matches (local_error, SOUP_HTTP_ERROR,
SOUP_STATUS_FORBIDDEN))) {
g_simple_async_result_take_error (rd->simple,
local_error);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/evolution-data-server-3.22.4/modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop
new/evolution-data-server-3.22.5/modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop
---
old/evolution-data-server-3.22.4/modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop
2017-01-16 12:44:21.000000000 +0100
+++
new/evolution-data-server-3.22.5/modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop
2017-02-13 12:46:25.000000000 +0100
@@ -94,4 +94,4 @@
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=evolution-data-server
X-GNOME-Bugzilla-Component=General
-X-GNOME-Bugzilla-Version=3.22.4
+X-GNOME-Bugzilla-Version=3.22.5