]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota: Add error string to quota_set_storage_error()
authorMartti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
Wed, 20 Sep 2017 05:18:11 +0000 (08:18 +0300)
committerTimo Sirainen <tss@dovecot.fi>
Thu, 19 Oct 2017 13:43:44 +0000 (16:43 +0300)
src/plugins/quota/quota-storage.c

index 3772028f6e09b2eb5e664e870c38d7221a38702f..50a9fad00c4cf5a8c03995ce78633320fbacd4f5 100644 (file)
@@ -48,7 +48,8 @@ static MODULE_CONTEXT_DEFINE_INIT(quota_mailbox_list_module,
 
 static void quota_set_storage_error(struct quota_transaction_context *qt,
                                    struct mail_storage *storage,
-                                   enum quota_alloc_result res)
+                                   enum quota_alloc_result res,
+                                   const char *internal_err)
 {
        const char *errstr = quota_alloc_result_errstr(res, qt);
        switch (res) {
@@ -60,7 +61,7 @@ static void quota_set_storage_error(struct quota_transaction_context *qt,
                mail_storage_set_error(storage, MAIL_ERROR_NOQUOTA, errstr);
                break;
        case QUOTA_ALLOC_RESULT_TEMPFAIL:
-               mail_storage_set_internal_error(storage);
+               mail_storage_set_critical(storage, "quota: %s", internal_err);
                break;
        case QUOTA_ALLOC_RESULT_OK:
                i_unreached();
@@ -123,9 +124,7 @@ quota_get_status(struct mailbox *box, enum mailbox_status_items items,
                const char *error;
                enum quota_alloc_result qret = quota_test_alloc(qt, 0, &error);
                if (qret != QUOTA_ALLOC_RESULT_OK) {
-                       if (qret == QUOTA_ALLOC_RESULT_TEMPFAIL)
-                               i_error("quota check failed: %s", error);
-                       quota_set_storage_error(qt, box->storage, qret);
+                       quota_set_storage_error(qt, box->storage, qret, error);
                        ret = -1;
                }
                quota_transaction_rollback(&qt);
@@ -263,7 +262,7 @@ static int quota_check(struct mail_save_context *ctx, struct mailbox *src_box)
                i_error("quota check failed: %s", error);
                return 0;
        default:
-               quota_set_storage_error(qt, t->box->storage, ret);
+               quota_set_storage_error(qt, t->box->storage, ret, error);
                return -1;
        }
 }
@@ -323,7 +322,7 @@ quota_save_begin(struct mail_save_context *ctx, struct istream *input)
                        i_error("quota allocation failed: %s", error);
                        break;
                default:
-                       quota_set_storage_error(qt, t->box->storage, qret);
+                       quota_set_storage_error(qt, t->box->storage, qret, error);
                        return -1;
                }
        }