struct istream *input;
bool has_nuls;
- if (msgpart->fetch_type == FETCH_HEADER_FIELDS) {
- /* mail_get_header_stream() already filtered out the
- unwanted headers. */
- input = mail_input;
- i_stream_ref(input);
- } else {
+ if (msgpart->fetch_type != FETCH_HEADER_FIELDS) {
i_assert(msgpart->fetch_type == FETCH_HEADER_FIELDS_NOT);
input = i_stream_create_header_filter(mail_input,
HEADER_FILTER_EXCLUDE |
hdr_fields, hdr_count,
*null_header_filter_callback,
(void *)NULL);
+ } else if (msgpart->section_number[0] != '\0') {
+ /* fetching partial headers for a message/rfc822 part. */
+ input = i_stream_create_header_filter(mail_input,
+ HEADER_FILTER_INCLUDE |
+ HEADER_FILTER_HIDE_BODY,
+ hdr_fields, hdr_count,
+ *null_header_filter_callback,
+ (void *)NULL);
+ } else {
+ /* mail_get_header_stream() already filtered out the
+ unwanted headers. */
+ input = mail_input;
+ i_stream_ref(input);
}
if (message_get_header_size(input, &hdr_size, &has_nuls) < 0) {