aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2001-08-18 03:02:48 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-08-18 03:02:48 +0800
commit2968652a61a5e69556559c304b9362f049fa1544 (patch)
treedd2059a395838cb6bd63fc300e443860658f5d91
parent512423460aae7c2e98fc888e58d171f1bd68dca2 (diff)
downloadgsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar.gz
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar.bz2
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar.lz
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar.xz
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.tar.zst
gsoc2013-evolution-2968652a61a5e69556559c304b9362f049fa1544.zip
Start scanning new messages at maxuid + 1 rather than uidval + 1? Maybe
2001-08-17 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-folder.c (imap_update_summary): Start scanning new messages at maxuid + 1 rather than uidval + 1? Maybe I'm missing the logic, but anyways...this might fix bug #5348. svn path=/trunk/; revision=12170
-rw-r--r--camel/ChangeLog6
-rw-r--r--camel/providers/imap/camel-imap-folder.c70
2 files changed, 41 insertions, 35 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 28c7f6ba77..7c89991299 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,9 @@
+2001-08-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Start
+ scanning new messages at maxuid + 1 rather than uidval + 1? Maybe
+ I'm missing the logic, but anyways...this might fix bug #5348.
+
2001-08-16 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (imap_keepalive): If we are
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c
index a0eec3a67b..1e74461ba0 100644
--- a/camel/providers/imap/camel-imap-folder.c
+++ b/camel/providers/imap/camel-imap-folder.c
@@ -1588,24 +1588,24 @@ imap_update_summary (CamelFolder *folder, int exists,
GPtrArray *recents,
CamelException *ex)
{
- CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
- CamelImapResponseType type;
+ CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
GPtrArray *fetch_data = NULL, *messages = NULL, *needheaders;
- char *uid, *resp;
+ guint32 flags, uidval, maxuid;
+ int i, seq, first, size, got;
+ CamelImapResponseType type;
const char *header_spec;
- int i, seq, first, size, got, uidval;
CamelMessageInfo *mi;
CamelStream *stream;
- guint32 flags;
+ char *uid, *resp;
GData *data;
-
+
CAMEL_IMAP_STORE_ASSERT_LOCKED (store, command_lock);
if (store->server_level >= IMAP_LEVEL_IMAP4REV1)
header_spec = "HEADER";
else
header_spec = "0";
-
+
/* Figure out if any of the new messages are already cached (which
* may be the case if we're re-syncing after disconnected operation).
* If so, get their UIDs, FLAGS, and SIZEs. If not, get all that
@@ -1619,16 +1619,17 @@ imap_update_summary (CamelFolder *folder, int exists,
camel_folder_summary_info_free (folder->summary, mi);
} else
uidval = 0;
-
+
size = (exists - seq) * (IMAP_PRETEND_SIZEOF_FLAGS + IMAP_PRETEND_SIZEOF_SIZE);
got = 0;
-
- if (uidval >= camel_imap_message_cache_max_uid (imap_folder->cache)) {
+
+ maxuid = camel_imap_message_cache_max_uid (imap_folder->cache);
+ if (uidval >= maxuid) {
/* None of the new messages are cached */
size += (exists - seq) * IMAP_PRETEND_SIZEOF_HEADERS;
if (!camel_imap_command_start (store, folder, ex,
"UID FETCH %d:* (FLAGS RFC822.SIZE BODY.PEEK[%s])",
- uidval + 1, header_spec))
+ maxuid + 1, header_spec))
return;
camel_operation_start (NULL, _("Fetching summary information for new messages"));
} else {
@@ -1638,7 +1639,7 @@ imap_update_summary (CamelFolder *folder, int exists,
return;
camel_operation_start (NULL, _("Scanning for new messages"));
}
-
+
/* Parse the responses. We can't add a message to the summary
* until we've gotten its headers, and there's no guarantee
* the server will send the responses in a useful order...
@@ -1806,13 +1807,13 @@ camel_imap_folder_changed (CamelFolder *folder, int exists,
CamelMessageInfo *info;
GPtrArray *recents = NULL;
int len;
-
+
CAMEL_IMAP_STORE_ASSERT_LOCKED (folder->parent_store, command_lock);
-
+
changes = camel_folder_change_info_new ();
if (expunged) {
int i, id;
-
+
for (i = 0; i < expunged->len; i++) {
id = g_array_index (expunged, int, i);
info = camel_folder_summary_index (folder->summary, id - 1);
@@ -1830,44 +1831,43 @@ camel_imap_folder_changed (CamelFolder *folder, int exists,
camel_folder_summary_info_free(folder->summary, info);
}
}
-
+
len = camel_folder_summary_count (folder->summary);
if (exists > len) {
if (imap_folder->do_filtering)
recents = g_ptr_array_new ();
imap_update_summary (folder, exists, changes, recents, ex);
}
-
+
/* if we have updates to make for filtering (probably), then we freeze the
folder so we dont show them till they're complete, this may cause unacceptable
delays for users, but the alternative isn't very nice either (show them and let
them change as processed) */
- if (recents && !camel_exception_is_set(ex) && recents->len) {
+ if (recents && !camel_exception_is_set (ex) && recents->len) {
CamelFilterDriver *driver;
-
- camel_folder_freeze(folder);
-
- if (camel_folder_change_info_changed(changes))
- camel_object_trigger_event(CAMEL_OBJECT(folder), "folder_changed", changes);
-
- driver = camel_session_get_filter_driver(CAMEL_SERVICE(folder->parent_store)->session, "incoming", ex);
+
+ camel_folder_freeze (folder);
+
+ if (camel_folder_change_info_changed (changes))
+ camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
+
+ driver = camel_session_get_filter_driver (CAMEL_SERVICE (folder->parent_store)->session, "incoming", ex);
if (driver) {
- camel_filter_driver_filter_folder(driver, folder, NULL, recents, FALSE, ex);
- camel_object_unref(CAMEL_OBJECT(driver));
+ camel_filter_driver_filter_folder (driver, folder, NULL, recents, FALSE, ex);
+ camel_object_unref (CAMEL_OBJECT (driver));
}
-
- camel_folder_thaw(folder);
+
+ camel_folder_thaw (folder);
} else {
- if (camel_folder_change_info_changed(changes))
- camel_object_trigger_event(CAMEL_OBJECT(folder), "folder_changed", changes);
+ if (camel_folder_change_info_changed (changes))
+ camel_object_trigger_event (CAMEL_OBJECT (folder), "folder_changed", changes);
}
-
+
camel_folder_change_info_free (changes);
-
+
if (recents)
g_ptr_array_free (recents, TRUE);
-
-
+
camel_folder_summary_save (folder->summary);
}