Mercurial > dovecot > core-2.2
changeset 21603:6d50f63cfa67
lib-storage: Add MAIL_ERROR_LIMIT
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 17 Feb 2017 18:56:23 +0200 |
parents | 9aac2a64e5c2 |
children | fb8ef6e2c2fe |
files | src/doveadm/doveadm-mail.c src/imap/imap-commands-util.c src/lib-storage/index/dbox-multi/mdbox-map.c src/lib-storage/index/imapc/imapc-storage.c src/lib-storage/mail-error.h |
diffstat | 5 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c Fri Feb 17 18:32:05 2017 +0200 +++ b/src/doveadm/doveadm-mail.c Fri Feb 17 18:56:23 2017 +0200 @@ -53,13 +53,12 @@ void doveadm_mail_failed_error(struct doveadm_mail_cmd_context *ctx, enum mail_error error) { - int exit_code = 0; + int exit_code = EX_TEMPFAIL; switch (error) { case MAIL_ERROR_NONE: i_unreached(); case MAIL_ERROR_TEMP: - exit_code = EX_TEMPFAIL; break; case MAIL_ERROR_NOTPOSSIBLE: case MAIL_ERROR_EXISTS: @@ -81,7 +80,9 @@ break; case MAIL_ERROR_EXPUNGED: case MAIL_ERROR_INUSE: - exit_code = EX_TEMPFAIL; + break; + case MAIL_ERROR_LIMIT: + exit_code = DOVEADM_EX_NOTPOSSIBLE; break; } /* tempfail overrides all other exit codes, otherwise use whatever
--- a/src/imap/imap-commands-util.c Fri Feb 17 18:32:05 2017 +0200 +++ b/src/imap/imap-commands-util.c Fri Feb 17 18:56:23 2017 +0200 @@ -169,6 +169,9 @@ case MAIL_ERROR_CONVERSION: case MAIL_ERROR_INVALIDDATA: break; + case MAIL_ERROR_LIMIT: + resp_code = IMAP_RESP_CODE_LIMIT; + break; } if (resp_code == NULL || *error_string == '[') return t_strconcat("NO ", error_string, NULL);
--- a/src/lib-storage/index/dbox-multi/mdbox-map.c Fri Feb 17 18:32:05 2017 +0200 +++ b/src/lib-storage/index/dbox-multi/mdbox-map.c Fri Feb 17 18:56:23 2017 +0200 @@ -674,7 +674,7 @@ /* we're getting close to the 64k limit. fail early to make it less likely that two processes increase the refcount enough times to cross the limit */ - mail_storage_set_error(MAP_STORAGE(map), MAIL_ERROR_NOTPOSSIBLE, + mail_storage_set_error(MAP_STORAGE(map), MAIL_ERROR_LIMIT, t_strdup_printf("Message has been copied too many times (%d + %d)", old_diff, new_diff)); return -1;
--- a/src/lib-storage/index/imapc/imapc-storage.c Fri Feb 17 18:32:05 2017 +0200 +++ b/src/lib-storage/index/imapc/imapc-storage.c Fri Feb 17 18:56:23 2017 +0200 @@ -45,7 +45,7 @@ { IMAP_RESP_CODE_SERVERBUG, MAIL_ERROR_TEMP }, /* { IMAP_RESP_CODE_CLIENTBUG, 0 }, */ { IMAP_RESP_CODE_CANNOT, MAIL_ERROR_NOTPOSSIBLE }, - { IMAP_RESP_CODE_LIMIT, MAIL_ERROR_NOTPOSSIBLE }, + { IMAP_RESP_CODE_LIMIT, MAIL_ERROR_LIMIT }, { IMAP_RESP_CODE_OVERQUOTA, MAIL_ERROR_NOQUOTA }, { IMAP_RESP_CODE_ALREADYEXISTS, MAIL_ERROR_EXISTS }, { IMAP_RESP_CODE_NONEXISTENT, MAIL_ERROR_NOTFOUND }
--- a/src/lib-storage/mail-error.h Fri Feb 17 18:32:05 2017 +0200 +++ b/src/lib-storage/mail-error.h Fri Feb 17 18:56:23 2017 +0200 @@ -49,6 +49,8 @@ /* Can't do the requested data conversion because the original data isn't valid. */ MAIL_ERROR_INVALIDDATA, + /* Operation ran against some kind of a limit. */ + MAIL_ERROR_LIMIT, /* FIXME: Obsolete - remove in v2.3 */ MAIL_ERROR_NOSPACE = MAIL_ERROR_NOQUOTA