# HG changeset patch # User Timo Sirainen # Date 1063160190 -10800 # Node ID 63254344ea0eb83957d638fa241da869b4ee9434 # Parent ba17c15b9b404c9360481d3902ccc2246da13b15 get_header() returned only first line of multiline headers diff -r ba17c15b9b40 -r 63254344ea0e src/lib-storage/index/index-mail-headers.c --- a/src/lib-storage/index/index-mail-headers.c Wed Sep 10 05:07:05 2003 +0300 +++ b/src/lib-storage/index/index-mail-headers.c Wed Sep 10 05:16:30 2003 +0300 @@ -573,6 +573,7 @@ { struct index_mail *mail = (struct index_mail *) _mail; struct cached_header *hdr; + const unsigned char *start, *end, *p; const char *arr[2]; int idx; @@ -600,8 +601,19 @@ } } - return hdr->value_idx == 0 ? NULL : - t_strcut(str_c(mail->data.header_data) + hdr->value_idx, '\n'); + if (hdr->value_idx == 0) + return NULL; + + start = str_data(mail->data.header_data); + end = start + str_len(mail->data.header_data); + for (p = start + hdr->value_idx; p != end; p++) { + if (*p == '\n') { + if (p+1 == end || (p[1] != ' ' && p[1] != '\t')) + break; + } + } + + return t_strdup_until(start, p); } struct istream *index_mail_get_headers(struct mail *_mail,