static void fts_solr_set_default_ns(struct solr_fts_backend *backend) { struct mail_namespace *ns = backend->backend.ns; struct fts_solr_user *fuser = FTS_SOLR_USER_CONTEXT(ns->user); const struct fts_solr_settings *set = &fuser->set; const char *str; if (backend->default_ns != NULL) return; if (set->default_ns_prefix != NULL) { backend->default_ns = mail_namespace_find_prefix(ns->user->namespaces, set->default_ns_prefix); if (backend->default_ns == NULL) { i_error("fts_solr: default_ns setting points to " "nonexistent namespace"); } } if (backend->default_ns == NULL) { backend->default_ns = mail_namespace_find_inbox(ns->user->namespaces); } while (backend->default_ns->alias_for != NULL) backend->default_ns = backend->default_ns->alias_for; if (ns != backend->default_ns) { str = solr_escape_id_str(ns->prefix); backend->id_namespace = i_strdup(str); } }
static int fts_namespace_find(struct mail_user *user, const char *ns_prefix, struct mail_namespace **ns_r) { struct mail_namespace *ns; if (ns_prefix == NULL) ns = mail_namespace_find_inbox(user->namespaces); else { ns = mail_namespace_find_prefix(user->namespaces, ns_prefix); if (ns == NULL) { i_error("Namespace prefix not found: %s", ns_prefix); return -1; } } if (fts_list_backend(ns->list) == NULL) { i_error("fts not enabled for user's namespace %s", ns_prefix); return -1; } *ns_r = ns; return 0; }