From: Timo Sirainen Date: Mon, 18 Mar 2024 21:39:12 +0000 (+0200) Subject: fts: Lookup fts settings using fts_backend's event X-Git-Tag: 2.4.0~626 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf4131c27828be5cfbfc89067441f88a4bdbad6b;p=thirdparty%2Fdovecot%2Fcore.git fts: Lookup fts settings using fts_backend's event --- diff --git a/src/plugins/fts-flatcurve/fts-backend-flatcurve.c b/src/plugins/fts-flatcurve/fts-backend-flatcurve.c index ef72972043..3253a9c012 100644 --- a/src/plugins/fts-flatcurve/fts-backend-flatcurve.c +++ b/src/plugins/fts-flatcurve/fts-backend-flatcurve.c @@ -44,8 +44,14 @@ fts_backend_flatcurve_init(struct fts_backend *_backend, const char **error_r) container_of(_backend, struct flatcurve_fts_backend, backend); struct fts_flatcurve_user *fuser; - if (fts_flatcurve_mail_user_get(_backend->ns->user, &fuser, error_r) < 0) + backend->event = event_create(_backend->event); + event_add_category(backend->event, &event_category_fts_flatcurve); + + if (fts_flatcurve_mail_user_get(_backend->ns->user, backend->event, + &fuser, error_r) < 0) { + event_unref(&backend->event); return -1; + } backend->boxname = str_new(backend->pool, 128); backend->db_path = str_new(backend->pool, 256); @@ -55,9 +61,6 @@ fts_backend_flatcurve_init(struct fts_backend *_backend, const char **error_r) fts_flatcurve_xapian_init(backend); - backend->event = event_create(_backend->event); - event_add_category(backend->event, &event_category_fts_flatcurve); - return fts_backend_flatcurve_close_mailbox(backend, error_r); } diff --git a/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c b/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c index 017a44f621..badfc03743 100644 --- a/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c +++ b/src/plugins/fts-flatcurve/fts-flatcurve-plugin.c @@ -24,19 +24,19 @@ static void fts_flatcurve_mail_user_deinit(struct mail_user *user) fuser->module_ctx.super.deinit(user); } -int fts_flatcurve_mail_user_get(struct mail_user *user, +int fts_flatcurve_mail_user_get(struct mail_user *user, struct event *event, struct fts_flatcurve_user **fuser_r, const char **error_r) { struct fts_flatcurve_user *fuser = FTS_FLATCURVE_USER_CONTEXT(user); struct fts_flatcurve_settings *set; - if (settings_get(user->event, &fts_flatcurve_setting_parser_info, 0, + if (settings_get(event, &fts_flatcurve_setting_parser_info, 0, &set, error_r) < 0) return -1; /* Reference the user even when fuser is already initialized */ - if (fts_mail_user_init(user, TRUE, error_r) < 0) { + if (fts_mail_user_init(user, event, TRUE, error_r) < 0) { settings_free(set); return -1; } diff --git a/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h b/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h index 37c1d4b952..fa2c548866 100644 --- a/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h +++ b/src/plugins/fts-flatcurve/fts-flatcurve-plugin.h @@ -24,7 +24,7 @@ struct fts_flatcurve_user { extern struct fts_backend fts_backend_flatcurve; extern MODULE_CONTEXT_DEFINE(fts_flatcurve_user_module, &mail_user_module_register); -int fts_flatcurve_mail_user_get(struct mail_user *user, +int fts_flatcurve_mail_user_get(struct mail_user *user, struct event *event, struct fts_flatcurve_user **fuser_r, const char **error_r); diff --git a/src/plugins/fts-solr/fts-backend-solr.c b/src/plugins/fts-solr/fts-backend-solr.c index 03d8e2ebac..6cc82f285b 100644 --- a/src/plugins/fts-solr/fts-backend-solr.c +++ b/src/plugins/fts-solr/fts-backend-solr.c @@ -187,12 +187,15 @@ fts_backend_solr_init(struct fts_backend *_backend, const char **error_r) struct solr_fts_backend *backend = (struct solr_fts_backend *)_backend; struct fts_solr_user *fuser; - if (fts_solr_mail_user_get(_backend->ns->user, &fuser, error_r) < 0) - return -1; - backend->event = event_create(_backend->event); event_add_category(backend->event, &event_category_fts_solr); + if (fts_solr_mail_user_get(_backend->ns->user, backend->event, + &fuser, error_r) < 0) { + event_unref(&backend->event); + return -1; + } + return solr_connection_init(fuser->set, backend->event, &backend->solr_conn, error_r); } diff --git a/src/plugins/fts-solr/fts-solr-plugin.c b/src/plugins/fts-solr/fts-solr-plugin.c index 88edb362a9..a8e7bbce02 100644 --- a/src/plugins/fts-solr/fts-solr-plugin.c +++ b/src/plugins/fts-solr/fts-solr-plugin.c @@ -25,19 +25,19 @@ static void fts_solr_mail_user_deinit(struct mail_user *user) fuser->module_ctx.super.deinit(user); } -int fts_solr_mail_user_get(struct mail_user *user, +int fts_solr_mail_user_get(struct mail_user *user, struct event *event, struct fts_solr_user **fuser_r, const char **error_r) { struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(user); const struct fts_solr_settings *set; - if (fts_solr_settings_get(user->event, &fts_solr_setting_parser_info, + if (fts_solr_settings_get(event, &fts_solr_setting_parser_info, &set, error_r) < 0) return -1; /* Reference the user even when fuser is already initialized */ - if (fts_mail_user_init(user, FALSE, error_r) < 0) { + if (fts_mail_user_init(user, event, FALSE, error_r) < 0) { settings_free(set); return -1; } diff --git a/src/plugins/fts-solr/fts-solr-plugin.h b/src/plugins/fts-solr/fts-solr-plugin.h index d672863e96..042bf9f9de 100644 --- a/src/plugins/fts-solr/fts-solr-plugin.h +++ b/src/plugins/fts-solr/fts-solr-plugin.h @@ -21,7 +21,7 @@ extern struct fts_backend fts_backend_solr; extern MODULE_CONTEXT_DEFINE(fts_solr_user_module, &mail_user_module_register); extern struct http_client *solr_http_client; -int fts_solr_mail_user_get(struct mail_user *user, +int fts_solr_mail_user_get(struct mail_user *user, struct event *event, struct fts_solr_user **fuser_r, const char **error_r); diff --git a/src/plugins/fts/fts-user.c b/src/plugins/fts/fts-user.c index c855b29afb..d0141bb393 100644 --- a/src/plugins/fts/fts-user.c +++ b/src/plugins/fts/fts-user.c @@ -38,8 +38,8 @@ size_t fts_mail_user_message_max_size(struct mail_user *user) return fuser->set->message_max_size; } -int fts_mail_user_init(struct mail_user *user, bool initialize_libfts, - const char **error_r) +int fts_mail_user_init(struct mail_user *user, struct event *event, + bool initialize_libfts, const char **error_r) { struct fts_user *fuser = FTS_USER_CONTEXT(user); @@ -47,10 +47,10 @@ int fts_mail_user_init(struct mail_user *user, bool initialize_libfts, return 0; const struct fts_settings *set; - if (settings_get(user->event, &fts_setting_parser_info, 0, &set, error_r) < 0) + if (settings_get(event, &fts_setting_parser_info, 0, &set, error_r) < 0) return -1; - if (lang_user_init(user, user->event, initialize_libfts, error_r) < 0) { + if (lang_user_init(user, event, initialize_libfts, error_r) < 0) { settings_free(set); return -1; } diff --git a/src/plugins/fts/fts-user.h b/src/plugins/fts/fts-user.h index 94681bca01..1c7f982a4b 100644 --- a/src/plugins/fts/fts-user.h +++ b/src/plugins/fts/fts-user.h @@ -7,8 +7,8 @@ const struct fts_settings *fts_user_get_settings(struct mail_user *user); size_t fts_mail_user_message_max_size(struct mail_user *user); -int fts_mail_user_init(struct mail_user *user, bool initialize_libfts, - const char **error_r); +int fts_mail_user_init(struct mail_user *user, struct event *event, + bool initialize_libfts, const char **error_r); void fts_mail_user_created(struct mail_user *user); #endif