]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Lookup fts settings using fts_backend's event
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 18 Mar 2024 21:39:12 +0000 (23:39 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:58 +0000 (10:39 +0200)
src/plugins/fts-flatcurve/fts-backend-flatcurve.c
src/plugins/fts-flatcurve/fts-flatcurve-plugin.c
src/plugins/fts-flatcurve/fts-flatcurve-plugin.h
src/plugins/fts-solr/fts-backend-solr.c
src/plugins/fts-solr/fts-solr-plugin.c
src/plugins/fts-solr/fts-solr-plugin.h
src/plugins/fts/fts-user.c
src/plugins/fts/fts-user.h

index ef729720435fd5e93acfc8e22afeb1a5ae87f076..3253a9c01289830f3b9e45844b52d48a396cfddc 100644 (file)
@@ -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);
 }
 
index 017a44f621a8a191ea25e97a0a9cd93d6f29a860..badfc0374375db3502ab169f3077ff06558a26ec 100644 (file)
@@ -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;
        }
index 37c1d4b952a7916f543edfdf46a0a42171ff0914..fa2c54886649838f5a583e17c68410a11babbaba 100644 (file)
@@ -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);
 
index 03d8e2ebac0653eae3c60be028a142bd74068d7d..6cc82f285b76828ed5c7ed0a7323fadc0dfbf1b3 100644 (file)
@@ -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);
 }
index 88edb362a91181fae56f2f733ee0e8caaff15612..a8e7bbce0241f8212f407c01cce2a2c1f29a1c06 100644 (file)
@@ -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;
        }
index d672863e969c784f4109a9df2c20528f2f7fc6af..042bf9f9de22f4094f79e0c77e923bcc12924079 100644 (file)
@@ -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);
 
index c855b29afb131e4444a101e38e6358831f0a346a..d0141bb39365784b1504bddd58367d332e5b49b7 100644 (file)
@@ -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;
        }
index 94681bca01b3d6f621c781892c31d65596d8ba09..1c7f982a4baba4e7d6497a674687a936667b51c7 100644 (file)
@@ -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