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) {
- ns = namespaces;
- namespaces = ns->next;
- mail_namespace_free(ns);
- }
- return -1;
+ namespaces->user->error =
+ t_strconcat("namespace configuration error: ",
+ *error_r, NULL);
}
- mail_user_add_namespace(namespaces->user, &namespaces);
- T_BEGIN {
- hook_mail_namespaces_created(namespaces);
- } T_END;
+ if (namespaces->user->error == NULL) {
+ mail_user_add_namespace(namespaces->user, &namespaces);
+ T_BEGIN {
+ hook_mail_namespaces_created(namespaces);
+ } T_END;
+ }
/* allow namespace hooks to return failure via the user error */
if (namespaces->user->error != NULL) {
+ namespaces->user->namespaces = NULL;
*error_r = t_strdup(namespaces->user->error);
+ while (namespaces != NULL) {
+ ns = namespaces;
+ namespaces = ns->next;
+ mail_namespace_free(ns);
+ }
return -1;
}
+
namespaces->user->namespaces_created = TRUE;
return 0;
}