[evolution-data-server] Add sanity check after QRESYNC
- From: David Woodhouse <dwmw2 src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add sanity check after QRESYNC
- Date: Fri, 2 Jul 2010 09:04:25 +0000 (UTC)
commit 2497833b3968fe5d8134c919d601a0dd9b23ab74
Author: David Woodhouse <David Woodhouse intel com>
Date: Fri Jul 2 09:43:38 2010 +0100
Add sanity check after QRESYNC
If the total number of messages, unseen count and modseq don't match
what we think they should be, then fall back to refetching all flags as
we would have done without QRESYNC.
camel/providers/imapx/camel-imapx-server.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 48de448..3861b65 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -3806,10 +3806,8 @@ imapx_job_refresh_info_start (CamelIMAPXServer *is, CamelIMAPXJob *job)
goto done;
/* If QRESYNC-capable we'll have got all flags changes in SELECT */
- if (can_qresync) {
- isum->modseq = ifolder->modseq_on_server;
- goto done;
- }
+ if (can_qresync)
+ goto qresync_done;
}
if (!need_rescan)
@@ -3818,8 +3816,23 @@ imapx_job_refresh_info_start (CamelIMAPXServer *is, CamelIMAPXJob *job)
if (can_qresync) {
/* Actually we only want to select it; no need for the NOOP */
camel_imapx_server_noop(is, folder, ex);
+ qresync_done:
isum->modseq = ifolder->modseq_on_server;
- goto done;
+ total = camel_folder_summary_count(job->folder->summary);
+ if (total != ifolder->exists_on_server ||
+ folder->summary->unread_count != ifolder->unread_on_server ||
+ (isum->modseq != ifolder->modseq_on_server)) {
+ c(printf("Eep, after QRESYNC we're out of sync. total %u / %u, unread %u / %u, modseq %lu / %lu\n",
+ total, ifolder->exists_on_server,
+ folder->summary->unread_count, ifolder->unread_on_server,
+ isum->modseq, ifolder->modseq_on_server));
+ } else {
+ c(printf("OK, after QRESYNC we're still in sync. total %u / %u, unread %u / %u, modseq %lu / %lu\n",
+ total, ifolder->exists_on_server,
+ folder->summary->unread_count, ifolder->unread_on_server,
+ isum->modseq, ifolder->modseq_on_server));
+ goto done;
+ }
}
imapx_job_scan_changes_start (is, job);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]