return ret;
}
-static int imapc_quota_init_limits(struct quota_root *_root)
+static int imapc_quota_init_limits(struct quota_root *_root,
+ const char **error_r)
{
struct imapc_quota_root *root = (struct imapc_quota_root *)_root;
- return imapc_quota_refresh(root);
+ int ret = imapc_quota_refresh(root);
+ if (ret < 0)
+ *error_r = "Failed to get quota data from remote imap server";
+ return ret;
}
static void
return TRUE;
}
-static int maildir_quota_init_limits(struct quota_root *_root)
+static int maildir_quota_init_limits(struct quota_root *_root,
+ const char **error_r)
{
struct maildir_quota_root *root = (struct maildir_quota_root *)_root;
- return maildirquota_read_limits(root) < 0 ? -1 : 0;
+ if (maildirquota_read_limits(root) < 0) {
+ *error_r = "Failed to read maildir quota limits";
+ return -1;
+ }
+ return 0;
}
static void
bool (*parse_rule)(struct quota_root_settings *root_set,
struct quota_rule *rule,
const char *str, const char **error_r);
- int (*init_limits)(struct quota_root *root);
+ int (*init_limits)(struct quota_root *root, const char **error_r);
/* called once for each namespace */
void (*namespace_added)(struct quota *quota,
if (!root->set->force_default_rule) {
if (root->backend.v.init_limits != NULL) {
- if (root->backend.v.init_limits(root) < 0) {
- *error_r = "Initializing limits failed for quota backend";
+ const char *error;
+ if (root->backend.v.init_limits(root, &error) < 0) {
+ *error_r = t_strdup_printf(
+ "Initializing limits failed for quota backend: %s",
+ error);
return -1;
}
}