if (mail_storage_create(ns, "raw", 0, &error) < 0)
i_fatal("Couldn't create internal raw storage: %s", error);
+ if (mail_namespaces_init_finish(ns, &error) < 0)
+ i_fatal("Couldn't create internal raw namespace: %s", error);
return user;
}
ns->next = namespaces;
namespaces = ns;
}
- if (!namespaces_check(namespaces, error_r)) {
+ if (namespaces->user->autocreated) {
+ /* e.g. raw user - don't check namespaces' validity */
+ } else if (!namespaces_check(namespaces, error_r)) {
*error_r = t_strconcat("namespace configuration error: ",
*error_r, NULL);
while (namespaces != NULL) {
}
}
- if (namespaces != NULL)
- return mail_namespaces_init_finish(namespaces, error_r);
-
- /* no namespaces defined, create a default one */
- return mail_namespaces_init_location(user, NULL, error_r);
+ if (namespaces == NULL) {
+ /* no namespaces defined, create a default one */
+ if (mail_namespaces_init_location(user, NULL, error_r) < 0)
+ return -1;
+ }
+ return mail_namespaces_init_finish(namespaces, error_r);
}
int mail_namespaces_init_location(struct mail_user *user, const char *location,
mail_namespace_free(ns);
return -1;
}
- user->namespaces = ns;
-
- T_BEGIN {
- hook_mail_namespaces_added(ns);
- hook_mail_namespaces_created(ns);
- } T_END;
return 0;
}
ns->user_set = user->set;
ns->mail_set = mail_user_set_get_storage_set(user);
i_array_init(&ns->all_storages, 2);
- user->namespaces = ns;
return ns;
}