On 06/22/2021 10:50 AM Alessio Cecchi <alessio@skye.it> wrote:
Il 21/06/21 13:18, Timo Sirainen ha scritto:
+ imap: Support official RFC8970 preview/snippet syntax. Old methods of retrieving preview information via IMAP commands ("SNIPPET and PREVIEW with explicit algorithm selection") have been deprecated.
Hi,
After upgrading dovecot from 2.3.14 to 2.3.15 I noticed a problem parsing FETCH response of PREVIEW attribute.
Basically there is any space after the preview content and the rest of the string which causes issues on parsing:
a UID FETCH 2539 (MODSEQ UID FLAGS INTERNALDATE PREVIEW BODY.PEEK[HEADER.FIELDS (FROM TO SUBJECT DATE)]) * 8 FETCH (UID 2539 MODSEQ (3) FLAGS (\Seen $HasNoAttachment) INTERNALDATE "04-Mar-2021 12:18:02 +0100" PREVIEW "test"BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)] {151}
With dovecot 2.3.14 there was no problem:
a UID FETCH 2539 (MODSEQ UID FLAGS INTERNALDATE PREVIEW BODY.PEEK[HEADER.FIELDS (FROM TO SUBJECT DATE)]) * 8 FETCH (UID 2539 MODSEQ (3) FLAGS (\Seen $HasNoAttachment) INTERNALDATE "04-Mar-2021 12:18:02 +0100" PREVIEW (FUZZY "test") BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)] {151}
Yes, this is an unfortunate regression if PREVIEW is not the last FETCH option listed in the command. Fix is: diff --git a/src/imap/imap-fetch-body.c b/src/imap/imap-fetch-body.c index 59a9b24d99..39e66f093d 100644 --- a/src/imap/imap-fetch-body.c +++ b/src/imap/imap-fetch-body.c @@ -648,6 +648,7 @@ fetch_snippet(struct imap_fetch_context *ctx, struct mail *mail, str_append(ctx->state.cur_str, "NIL"); if (preview->old_standard) str_append(ctx->state.cur_str, ")"); + str_append_c(ctx->state.cur_str, ' '); return 1; } michael