(imap_get_message): If the server_level < IMAP4rev1, always fetch
authorDan Winship <danw@src.gnome.org>
Tue, 3 Apr 2001 21:46:32 +0000 (21:46 +0000)
committerDan Winship <danw@src.gnome.org>
Tue, 3 Apr 2001 21:46:32 +0000 (21:46 +0000)
messages all-at-once, since they don't support the [#.MIME]
syntax.

camel/ChangeLog
camel/providers/imap/camel-imap-folder.c

index bc15521..eab9444 100644 (file)
@@ -3,6 +3,9 @@
        * providers/imap/camel-imap-folder.c (imap_sync): If we don't
        change any flags or expunge, send a NOOP to give the server a
        chance to send EXISTS, etc, messages.
+       (imap_get_message): If the server_level < IMAP4rev1, always fetch
+       messages all-at-once, since they don't support the [#.MIME]
+       syntax.
 
 2001-04-02  Dan Winship  <danw@ximian.com>
 
index 0a8f0ed..b05dcfb 100644 (file)
@@ -947,6 +947,7 @@ static CamelMimeMessage *
 imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
 {
        CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
+       CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
        CamelMessageInfo *mi;
        CamelMimeMessage *msg;
        CamelStream *stream;
@@ -954,8 +955,11 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
        mi = camel_folder_summary_uid (folder->summary, uid);
        g_return_val_if_fail (mi != NULL, NULL);
 
-       /* Fetch small messages directly. */
-       if (mi->size < IMAP_SMALL_BODY_SIZE) {
+       /* If the message is small, or the server doesn't support
+        * IMAP4rev1, fetch it in one piece.
+        */
+       if (mi->size < IMAP_SMALL_BODY_SIZE ||
+           store->server_level < IMAP_LEVEL_IMAP4REV1) {
                camel_folder_summary_info_free (folder->summary, mi);
                stream = camel_imap_folder_fetch_data (imap_folder, uid, "", FALSE, ex);
                if (!stream)
@@ -972,7 +976,6 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex)
         * an empty content struct.)
         */
        if (!mi->content->type) {
-               CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store);
                CamelImapResponse *response;
                GData *fetch_data;
                char *body, *found_uid;