From f786488b2324c117f17d389281be0ff42655d4f9 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Tue, 13 Jul 2021 04:03:42 +0200 Subject: [PATCH] lib-storage: mail-duplicate - Change mail_duplicate_check() return type from bool to enum. --- src/lib-storage/mail-duplicate.c | 9 ++++++--- src/lib-storage/mail-duplicate.h | 12 ++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c index e51ff4cbfe..2d1a56af1e 100644 --- a/src/lib-storage/mail-duplicate.c +++ b/src/lib-storage/mail-duplicate.c @@ -246,8 +246,9 @@ static void mail_duplicate_file_free(struct mail_duplicate_file **_file) pool_unref(&file->pool); } -bool mail_duplicate_check(struct mail_duplicate_db *db, - const void *id, size_t id_size, const char *user) +enum mail_duplicate_check_result +mail_duplicate_check(struct mail_duplicate_db *db, + const void *id, size_t id_size, const char *user) { struct mail_duplicate d; @@ -263,7 +264,9 @@ bool mail_duplicate_check(struct mail_duplicate_db *db, d.id_size = id_size; d.user = user; - return hash_table_lookup(db->file->hash, &d) != NULL; + return (hash_table_lookup(db->file->hash, &d) != NULL ? + MAIL_DUPLICATE_CHECK_RESULT_EXISTS : + MAIL_DUPLICATE_CHECK_RESULT_NOT_FOUND); } void mail_duplicate_mark(struct mail_duplicate_db *db, diff --git a/src/lib-storage/mail-duplicate.h b/src/lib-storage/mail-duplicate.h index 4aa868edba..7e24e06c3d 100644 --- a/src/lib-storage/mail-duplicate.h +++ b/src/lib-storage/mail-duplicate.h @@ -4,10 +4,18 @@ struct mail_duplicate_db; struct mail_storage_settings; +enum mail_duplicate_check_result { + /* The ID exists. The ID is not locked. */ + MAIL_DUPLICATE_CHECK_RESULT_EXISTS, + /* The ID doesn't exist yet. The ID gets locked. */ + MAIL_DUPLICATE_CHECK_RESULT_NOT_FOUND, +}; + #define MAIL_DUPLICATE_DEFAULT_KEEP (3600 * 24) -bool mail_duplicate_check(struct mail_duplicate_db *db, - const void *id, size_t id_size, const char *user); +enum mail_duplicate_check_result +mail_duplicate_check(struct mail_duplicate_db *db, + const void *id, size_t id_size, const char *user); void mail_duplicate_mark(struct mail_duplicate_db *db, const void *id, size_t id_size, const char *user, time_t timestamp); -- 2.47.3