dovecot-2.2: lib-imap-storage: Reverted previous change.

dovecot at dovecot.org dovecot at dovecot.org
Thu Apr 3 22:03:29 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/cba3890dafdb
changeset: 17197:cba3890dafdb
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Apr 04 00:53:34 2014 +0300
description:
lib-imap-storage: Reverted previous change.
It broke FETCH BODY [n.HEADER.FIELDS ..]

diffstat:

 src/lib-imap-storage/imap-msgpart.c |  21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)

diffs (58 lines):

diff -r 1b71a0128d2d -r cba3890dafdb src/lib-imap-storage/imap-msgpart.c
--- a/src/lib-imap-storage/imap-msgpart.c	Fri Apr 04 00:30:11 2014 +0300
+++ b/src/lib-imap-storage/imap-msgpart.c	Fri Apr 04 00:53:34 2014 +0300
@@ -371,7 +371,6 @@
 	i_stream_seek(input, 0);
 	result_r->input = input;
 	result_r->size = hdr_size_r->virtual_size;
-	result_r->size_field = 0;
 	return 0;
 }
 
@@ -559,13 +558,14 @@
 	case FETCH_MIME_BODY:
 		i_unreached();
 	case FETCH_HEADER:
+	case FETCH_HEADER_FIELDS_NOT:
 		/* fetch the message's header */
 		if (mail_get_hdr_stream(mail, &hdr_size, &input) < 0)
 			return -1;
 		result_r->size_field = MAIL_FETCH_MESSAGE_PARTS;
 		break;
 	case FETCH_HEADER_FIELDS:
-		/* return specific headers */
+		/* try to lookup the headers from cache */
 		if (msgpart->header_ctx == NULL) {
 			msgpart->header_ctx =
 				mailbox_header_lookup_init(mail->box,
@@ -574,14 +574,8 @@
 		if (mail_get_header_stream(mail, msgpart->header_ctx,
 					   &input) < 0)
 			return -1;
-		return imap_msgpart_get_partial_header(mail, input, msgpart,
-						       part_size_r, result_r);
-	case FETCH_HEADER_FIELDS_NOT:
-		/* return specific headers */
-		if (mail_get_hdr_stream(mail, NULL, &input) < 0)
-			return -1;
-		return imap_msgpart_get_partial_header(mail, input, msgpart,
-						       part_size_r, result_r);
+		result_r->size_field = 0;
+		break;
 	case FETCH_BODY:
 		/* fetch the message's body */
 		if (mail_get_stream(mail, &hdr_size, &body_size, &input) < 0)
@@ -589,7 +583,12 @@
 		result_r->size_field = MAIL_FETCH_MESSAGE_PARTS;
 		break;
 	}
-	i_assert(msgpart->headers == NULL);
+
+	if (msgpart->headers != NULL) {
+		/* return specific headers */
+		return imap_msgpart_get_partial_header(mail, input, msgpart,
+						       part_size_r, result_r);
+	}
 
 	switch (msgpart->fetch_type) {
 	case FETCH_FULL:


More information about the dovecot-cvs mailing list