2006-05-19 [colin] 2.2.0cvs40
authorColin Leroy <colin@colino.net>
Fri, 19 May 2006 23:19:09 +0000 (23:19 +0000)
committerColin Leroy <colin@colino.net>
Fri, 19 May 2006 23:19:09 +0000 (23:19 +0000)
* src/imap.c
Don't issue SELECT in imap_change_flags
before having checked that we indeed have
some flags to change. MSG_POSTFILTERED for
example can't be used on IMAP.
Fixes bug #955 (copying messages between
imap folders is extremely slow), which was
a regression.

ChangeLog
PATCHSETS
configure.ac
src/imap.c

index af157d83f2153f4000a797620664cb19afcf0455..d7de29e9b665c08caa8448b78d1dc904729c890d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-05-19 [colin]     2.2.0cvs40
+
+       * src/imap.c
+               Don't issue SELECT in imap_change_flags
+               before having checked that we indeed have
+               some flags to change. MSG_POSTFILTERED for
+               example can't be used on IMAP.
+               Fixes bug #955 (copying messages between 
+               imap folders is extremely slow), which was
+               a regression.
+
 2006-05-19 [colin]     2.2.0cvs39
 
        * src/folder.c
index 06cb67506b5c0e2baad501d34ae138d7c2f2aced..e08d70a4f5f73d758b6a0fea3c3d5014bfd2465e 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.1.2.16 -r 1.1.2.17 manual/advanced.xml;  cvs diff -u -r 1.1.2.5 -r 1.1.2.6 manual/fr/advanced.xml;  cvs diff -u -r 1.1.4.16 -r 1.1.4.17 src/gtk/logwindow.c;  cvs diff -u -r 1.204.2.85 -r 1.204.2.86 src/prefs_common.c;  cvs diff -u -r 1.103.2.48 -r 1.103.2.49 src/prefs_common.h;  ) > 2.2.0cvs37.patchset
 ( cvs diff -u -r 1.1.2.17 -r 1.1.2.18 manual/advanced.xml;  ) > 2.2.0cvs38.patchset
 ( cvs diff -u -r 1.213.2.92 -r 1.213.2.93 src/folder.c;  cvs diff -u -r 1.87.2.27 -r 1.87.2.28 src/folder.h;  cvs diff -u -r 1.207.2.97 -r 1.207.2.98 src/folderview.c;  ) > 2.2.0cvs39.patchset
+( cvs diff -u -r 1.179.2.114 -r 1.179.2.115 src/imap.c;  ) > 2.2.0cvs40.patchset
index ea6280e9b6b9b63f0d546f91cbf7839b491be140..34cf60ec0d3c622cd24865be67637015567910d3 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=2
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=39
+EXTRA_VERSION=40
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index c59fc8b0553730b9d2a90c262ed9dca4d5f53429..7aaa195530734b3acd50e53b1dcca881ab69c213 100644 (file)
@@ -3452,12 +3452,6 @@ void imap_change_flags(Folder *folder, FolderItem *item, MsgInfo *msginfo, MsgPe
        if (!session) {
                return;
        }
-       lock_session();
-       if ((ok = imap_select(session, IMAP_FOLDER(folder), msginfo->folder->path,
-           NULL, NULL, NULL, NULL, FALSE)) != IMAP_SUCCESS) {
-               unlock_session();
-               return;
-       }
 
        if (!MSG_IS_MARKED(msginfo->flags) &&  (newflags & MSG_MARKED))
                flags_set |= IMAP_FLAG_FLAGGED;
@@ -3479,6 +3473,18 @@ void imap_change_flags(Folder *folder, FolderItem *item, MsgInfo *msginfo, MsgPe
        if ( MSG_IS_DELETED(msginfo->flags) && !(newflags & MSG_DELETED))
                flags_unset |= IMAP_FLAG_DELETED;
 
+       if (!flags_set && !flags_unset) {
+               /* the changed flags were not translatable to IMAP-speak.
+                * like MSG_POSTFILTERED */
+               return;
+       }
+
+       lock_session();
+       if ((ok = imap_select(session, IMAP_FOLDER(folder), msginfo->folder->path,
+           NULL, NULL, NULL, NULL, FALSE)) != IMAP_SUCCESS) {
+               unlock_session();
+               return;
+       }
        numlist.next = NULL;
        numlist.data = GINT_TO_POINTER(msginfo->msgnum);