diff options
author | Not Zed <NotZed@Ximian.com> | 2002-07-24 11:41:24 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2002-07-24 11:41:24 +0800 |
commit | d487683bb3f82a0905e075f2f689479e0b36727d (patch) | |
tree | 436503876ad7104d31bba36f690558b3ad1746f6 /camel | |
parent | 7e8effc12c9274a8c2fb8ecdf0a01e261cdedeaa (diff) | |
download | gsoc2013-evolution-d487683bb3f82a0905e075f2f689479e0b36727d.tar.gz gsoc2013-evolution-d487683bb3f82a0905e075f2f689479e0b36727d.tar.zst gsoc2013-evolution-d487683bb3f82a0905e075f2f689479e0b36727d.zip |
Sync before doing an expunge if we dont have uidplus. See #25766.
2002-07-24 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
Sync before doing an expunge if we dont have uidplus. See #25766.
(imap_expunge_uids_resyncing): Same here.
svn path=/trunk/; revision=17562
Diffstat (limited to 'camel')
-rw-r--r-- | camel/ChangeLog | 4 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 17 |
2 files changed, 20 insertions, 1 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 79ee0a6c6b..754e073700 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,9 @@ 2002-07-24 Not Zed <NotZed@Ximian.com> + * providers/imap/camel-imap-folder.c (imap_expunge_uids_online): + Sync before doing an expunge if we dont have uidplus. See #25766. + (imap_expunge_uids_resyncing): Same here. + * providers/imap/camel-imap-store.c (get_folder_info_online): Duplicated the very much hack in imap_store_refresh_folders() to avoid a deadlock in #27959. A decent fix has to wait for a diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index 2676dc1db9..60c3979b03 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -823,7 +823,15 @@ imap_expunge_uids_online (CamelFolder *folder, GPtrArray *uids, CamelException * char *set; CAMEL_IMAP_STORE_LOCK (store, command_lock); - + + if ((store->capabilities & IMAP_CAPABILITY_UIDPLUS) == 0) { + ((CamelFolderClass *)CAMEL_OBJECT_GET_CLASS(folder))->sync(folder, 0, ex); + if (camel_exception_is_set(ex)) { + CAMEL_IMAP_STORE_UNLOCK (store, command_lock); + return; + } + } + while (uid < uids->len) { set = imap_uid_array_to_set (folder->summary, uids, uid, UID_SET_LIMIT, &uid); response = camel_imap_command (store, folder, ex, @@ -886,6 +894,13 @@ imap_expunge_uids_resyncing (CamelFolder *folder, GPtrArray *uids, CamelExceptio */ CAMEL_IMAP_STORE_LOCK (store, command_lock); + + ((CamelFolderClass *)CAMEL_OBJECT_GET_CLASS(folder))->sync(folder, 0, ex); + if (camel_exception_is_set(ex)) { + CAMEL_IMAP_STORE_UNLOCK (store, command_lock); + return; + } + response = camel_imap_command (store, folder, ex, "UID SEARCH DELETED"); if (!response) { CAMEL_IMAP_STORE_UNLOCK (store, command_lock); |