Mercurial > dovecot > core-2.2
changeset 22954:39d0d0e8eca2
fts: Make sure indexing virtual mailbox doesn't recurse and index mail multiple times
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 03 May 2018 18:30:51 +0300 |
parents | fa8ce7d554ab |
children | 812e5c961328 |
files | src/plugins/fts/fts-storage.c |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts/fts-storage.c Thu May 03 15:22:09 2018 +0300 +++ b/src/plugins/fts/fts-storage.c Thu May 03 18:30:51 2018 +0300 @@ -54,6 +54,7 @@ uint32_t highest_virtual_uid; unsigned int precache_extra_count; + unsigned int indexing:1; unsigned int precached:1; unsigned int mails_saved:1; unsigned int failed:1; @@ -525,8 +526,12 @@ if (fmail->virtual_mail) { if (ft->highest_virtual_uid < _mail->uid) ft->highest_virtual_uid = _mail->uid; - } else T_BEGIN { + } else if (!ft->indexing) T_BEGIN { + /* avoid recursing here from fts_mail_precache_range() */ + ft->indexing = TRUE; fts_mail_index(_mail); + i_assert(ft->indexing); + ft->indexing = FALSE; } T_END; }