From: Timo Sirainen Date: Thu, 21 Mar 2024 20:41:00 +0000 (+0200) Subject: fts: Add fts_search setting to disable FTS for specific mailboxes X-Git-Tag: 2.4.1~896 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f33b804efa7e965585c57b72d9ccd907844ab64f;p=thirdparty%2Fdovecot%2Fcore.git fts: Add fts_search setting to disable FTS for specific mailboxes For example: mailbox Drafts { fts_search = no } --- diff --git a/src/plugins/fts/fts-settings.c b/src/plugins/fts/fts-settings.c index a148ea919f..6186b895e7 100644 --- a/src/plugins/fts/fts-settings.c +++ b/src/plugins/fts/fts-settings.c @@ -19,6 +19,7 @@ static const struct setting_define fts_setting_defines[] = { { .type = SET_FILTER_NAME, .key = FTS_FILTER_DECODER_TIKA }, DEF(STR, decoder_tika_url), DEF(STR, driver), + DEF(BOOL, search), DEF(ENUM, search_add_missing), DEF(BOOL, search_read_fallback), DEF(BOOLLIST,header_excludes), @@ -49,6 +50,7 @@ static const struct fts_settings fts_default_settings = { .decoder_script_socket_path = "", .decoder_tika_url = "", .driver = "", + .search = TRUE, .search_add_missing = FTS_SEARCH_ADD_MISSING_BODY_SEARCH_ONLY":yes", .search_read_fallback = TRUE, diff --git a/src/plugins/fts/fts-settings.h b/src/plugins/fts/fts-settings.h index ebd0509eee..b5af719a67 100644 --- a/src/plugins/fts/fts-settings.h +++ b/src/plugins/fts/fts-settings.h @@ -21,6 +21,7 @@ struct fts_settings { const char *decoder_script_socket_path; const char *decoder_tika_url; const char *driver; + bool search; const char *search_add_missing; bool search_read_fallback; unsigned int autoindex_max_recent_msgs; diff --git a/src/plugins/fts/fts-storage.c b/src/plugins/fts/fts-storage.c index 147755fcd1..08f5dd37be 100644 --- a/src/plugins/fts/fts-storage.c +++ b/src/plugins/fts/fts-storage.c @@ -177,7 +177,7 @@ fts_mailbox_search_init(struct mailbox_transaction_context *t, ctx = fbox->module_ctx.super.search_init(t, args, sort_program, wanted_fields, wanted_headers); - if (*fbox->set->driver == '\0' || + if (!fbox->set->search || !fts_backend_can_lookup(flist->backend, args->args)) return ctx; @@ -669,7 +669,8 @@ fts_transaction_commit(struct mailbox_transaction_context *t, int ret = 0; const char *error; - autoindex = ft->mails_saved && fbox->set->autoindex && *fbox->set->driver != '\0'; + autoindex = ft->mails_saved && fbox->set->autoindex && + fbox->set->search; if (fts_transaction_end(t, &error) < 0) { mail_storage_set_error(t->box->storage, MAIL_ERROR_TEMP,