]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Omit irrelevant mail uid=0 for saved mails in mail event log prefix
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Tue, 7 Feb 2023 15:01:38 +0000 (16:01 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Feb 2023 19:00:52 +0000 (19:00 +0000)
src/lib-storage/mail.c
src/lib-storage/test-mail.c

index 225b358b248d3f102a2ff5c275304f1e4fe6db75..08968bc3a834fc67d5fe7f08690988b5d1afcf24 100644 (file)
@@ -139,9 +139,17 @@ void mail_event_create(struct mail *mail)
 
        T_BEGIN {
                char uid_buf[MAX_INT_STRLEN];
-               const char *prefix = t_strconcat(
-                       p->mail.saving ? "saving UID " : "UID ",
-                       dec2str_buf(uid_buf, p->mail.uid), ": ", NULL);
+               const char *prefix;
+               if (p->mail.uid == 0) {
+                       i_assert(p->mail.saving);
+                       prefix = "Saving mail: ";
+               } else {
+                       prefix = t_strconcat(
+                               p->mail.saving ? "Saving mail UID " : "UID ",
+                               dec2str_buf(uid_buf, p->mail.uid),
+                               ": ",
+                               NULL);
+               }
                event_set_append_log_prefix(p->_event, prefix);
        } T_END;
 }
index 8d60da69f08657bfc74037a3db035dd5a4cc4af0..204d05edab5755e8018cab336fe6273d6ad4a308 100644 (file)
@@ -495,14 +495,15 @@ static void test_mail_set_critical(void)
                       "\n"
                       "test body\n");
 
-       struct mailbox_transaction_context *trans =
-               mailbox_transaction_begin(box, 0, __func__);
-       struct mail *mail = mail_alloc(trans, 0, NULL);
-       mail_set_seq(mail, 1);
+       struct mail_private *pmail;
        enum mail_error mail_error;
        const char *last_internal_error;
 
        test_begin("mail_set_critical (UID)");
+       struct mailbox_transaction_context *trans =
+               mailbox_transaction_begin(box, 0, __func__);
+       struct mail *mail = mail_alloc(trans, 0, NULL);
+       mail_set_seq(mail, 1);
        mail->saving = FALSE;
        test_expect_error_string("Mailbox INBOX: UID 1: Mail Error: uid=1, "
                                 "saving=false");
@@ -513,15 +514,38 @@ static void test_mail_set_critical(void)
        test_assert(mail_error == MAIL_ERROR_TEMP);
        test_assert_strcmp(last_internal_error,
                           "Mail Error: uid=1, saving=false");
+       mail_free(&mail);
+       test_assert(mailbox_transaction_commit(&trans) == 0);
        test_end();
 
-       test_begin("mail_set_critical (saving)");
+       test_begin("mail_set_critical (saving-prefix: no uid)");
+       trans = mailbox_transaction_begin(box, 0, __func__);
+       mail = mail_alloc(trans, 0, NULL);
+       pmail = container_of(mail, struct mail_private, mail);
+       event_unref(&pmail->_event);
        mail->saving = TRUE;
-       struct mail_private *pmail =
-               container_of(mail, struct mail_private, mail);
+       test_expect_error_string("Mailbox INBOX: Saving mail: Mail Error: "
+                                "uid=0, saving=true");
+       mail_set_critical(mail, "Mail Error: uid=%u, saving=%s", mail->uid,
+                         "true");
+       test_expect_no_more_errors();
+       last_internal_error = mail_get_last_internal_error(mail, &mail_error);
+       test_assert(mail_error == MAIL_ERROR_TEMP);
+       test_assert_strcmp(last_internal_error,
+                          "Mail Error: uid=0, saving=true");
+       mail_free(&mail);
+       test_assert(mailbox_transaction_commit(&trans) == 0);
+       test_end();
+
+       test_begin("mail_set_critical (saving-prefix: UID)");
+       trans = mailbox_transaction_begin(box, 0, __func__);
+       mail = mail_alloc(trans, 0, NULL);
+       mail_set_seq(mail, 1);
+       pmail = container_of(mail, struct mail_private, mail);
        event_unref(&pmail->_event);
-       test_expect_error_string("Mailbox INBOX: saving UID 1: Mail Error: "
-                                "uid=1, saving=true");
+       mail->saving = TRUE;
+       test_expect_error_string("Mailbox INBOX: Saving mail UID 1: "
+                                "Mail Error: uid=1, saving=true");
        mail_set_critical(mail, "Mail Error: uid=%u, saving=%s", mail->uid,
                          "true");
        test_expect_no_more_errors();