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;
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,
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);