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