From: Timo Sirainen Date: Fri, 24 Jan 2020 11:50:50 +0000 (+0200) Subject: lib-storage: mailbox_list_get_last_error() - Handle unexpected situations better X-Git-Tag: 2.3.14.rc1~144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dde65e0ec93c7bc6d48b62ba082e2bc33f86b999;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mailbox_list_get_last_error() - Handle unexpected situations better Change the logic to be similar as in mail_storage_get_last_error() if the mail_error or error_string unexpectedly isn't set. --- diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index b9573cb90c..4ac22a2882 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -1908,11 +1908,23 @@ bool mailbox_list_try_get_absolute_path(struct mailbox_list *list, const char *mailbox_list_get_last_error(struct mailbox_list *list, enum mail_error *error_r) { + if (list->error == MAIL_ERROR_NONE) { + if (error_r != NULL) + *error_r = MAIL_ERROR_TEMP; + return list->error_string != NULL ? list->error_string : + "BUG: Unknown internal list error"; + } + + if (list->error_string == NULL) { + /* This shouldn't happen.. */ + list->error_string = + i_strdup_printf("BUG: Unknown 0x%x list error", + list->error); + } + if (error_r != NULL) *error_r = list->error; - - return list->error_string != NULL ? list->error_string : - "Unknown internal list error"; + return list->error_string; } enum mail_error mailbox_list_get_last_mail_error(struct mailbox_list *list)