From: Karl Fleischmann Date: Tue, 7 Feb 2023 15:01:38 +0000 (+0100) Subject: lib-storage: Omit irrelevant mail uid=0 for saved mails in mail event log prefix X-Git-Tag: 2.4.0~2983 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbb72c112a588cdee7c597dc49a4e55b74a19ad9;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Omit irrelevant mail uid=0 for saved mails in mail event log prefix --- diff --git a/src/lib-storage/mail.c b/src/lib-storage/mail.c index 225b358b24..08968bc3a8 100644 --- a/src/lib-storage/mail.c +++ b/src/lib-storage/mail.c @@ -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; } diff --git a/src/lib-storage/test-mail.c b/src/lib-storage/test-mail.c index 8d60da69f0..204d05edab 100644 --- a/src/lib-storage/test-mail.c +++ b/src/lib-storage/test-mail.c @@ -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();