diff options
-rw-r--r-- | camel/ChangeLog | 7 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 13 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-utils.c | 3 |
3 files changed, 17 insertions, 6 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 485b2e7e1b..8a4d7494e1 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,12 @@ 2002-05-13 Jeffrey Stedfast <fejj@ximian.com> + * providers/imap/camel-imap-folder.c (imap_get_message): Previous + fix reverted. + (get_content): Handle the case where a multipart's parent is a + message/rfc822 part. Fixes bug #24136. + +2002-05-13 Jeffrey Stedfast <fejj@ximian.com> + * providers/imap/camel-imap-store.c (camel_imap_store_class_init): Overload the setv/getv CamelObject virtual methods. (imap_setv): Implemented. diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index 3a1a62205b..627e31bf14 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -1502,11 +1502,16 @@ get_content (CamelImapFolder *imap_folder, const char *uid, camel_multipart_set_boundary (body_mp, NULL); speclen = strlen (part_spec); - child_spec = g_malloc (speclen + 15); + child_spec = g_malloc (speclen + 18); memcpy (child_spec, part_spec, speclen); if (speclen > 0) child_spec[speclen++] = '.'; + if (ci->parent && header_content_type_is (ci->parent->type, "message", "rfc822")) { + child_spec[speclen++] = '1'; + child_spec[speclen++] = '.'; + } + ci = ci->childs; num = 1; while (ci) { @@ -1542,7 +1547,7 @@ get_content (CamelImapFolder *imap_folder, const char *uid, ci = ci->next; } g_free (child_spec); - + return (CamelDataWrapper *)body_mp; } else if (header_content_type_is (ci->type, "message", "rfc822")) { return (CamelDataWrapper *) @@ -1552,7 +1557,7 @@ get_content (CamelImapFolder *imap_folder, const char *uid, child_spec = g_strdup_printf ("%s%s1", part_spec, *part_spec ? "." : ""); else child_spec = g_strdup (part_spec); - + content = camel_imap_wrapper_new (imap_folder, ci->type, uid, child_spec, part); g_free (child_spec); return content; @@ -1675,7 +1680,7 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) } response = camel_imap_command (store, folder, ex, - "UID FETCH %s BODYSTRUCTURE", uid); + "UID FETCH %s BODY", uid); if (!response) { camel_folder_summary_info_free (folder->summary, mi); return NULL; diff --git a/camel/providers/imap/camel-imap-utils.c b/camel/providers/imap/camel-imap-utils.c index 7ee7ff807d..617b587397 100644 --- a/camel/providers/imap/camel-imap-utils.c +++ b/camel/providers/imap/camel-imap-utils.c @@ -521,7 +521,7 @@ parse_params (char **parms_p, CamelContentType *type) * @folder: an imap folder * @ci: a CamelMessageContentInfo to fill in * - * This filles in @ci with data from *@body_p. On success *@body_p + * This fills in @ci with data from *@body_p. On success *@body_p * will point to the character after the body. On failure, it will be * set to %NULL and @ci will be unchanged. **/ @@ -547,7 +547,6 @@ imap_parse_body (char **body_p, CamelFolder *folder, /* Parse the child body parts */ children = g_ptr_array_new (); - i = 0; while (body && *body == '(') { child = camel_folder_summary_content_info_new (folder->summary); g_ptr_array_add (children, child); |