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);
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);
}
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;
}
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);
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);
}
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;
}
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);
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);
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;
}
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