Mercurial > dovecot > core-2.2
diff src/lib-imap-storage/imap-msgpart.c @ 17197:cba3890dafdb
lib-imap-storage: Reverted previous change.
It broke FETCH BODY [n.HEADER.FIELDS ..]
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 04 Apr 2014 00:53:34 +0300 |
parents | 1b71a0128d2d |
children | 95ae49692ccb |
line wrap: on
line diff
--- 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: