]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Check for auth failures when saving messages
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 12 Jun 2017 09:07:52 +0000 (12:07 +0300)
committerGitLab <gitlab@git.dovecot.net>
Mon, 12 Jun 2017 13:23:59 +0000 (16:23 +0300)
First, don't even attempt an APPEND if we've already seen an auth failure.
Second, if APPEND does fail because of auth error, set the correct error to
storage.

src/lib-storage/index/imapc/imapc-save.c

index 3886e9f114e8d6b6dd03bce946962be0117be562..47fcee8dafca0292a2ea197cc89a7636be6d680c 100644 (file)
@@ -66,6 +66,9 @@ int imapc_save_begin(struct mail_save_context *_ctx, struct istream *input)
 
        i_assert(ctx->fd == -1);
 
+       if (imapc_storage_client_handle_auth_failure(ctx->mbox->storage->client))
+               return -1;
+
        ctx->fd = imapc_client_create_temp_fd(ctx->mbox->storage->client->client,
                                              &path);
        if (ctx->fd == -1) {
@@ -165,6 +168,8 @@ static void imapc_save_callback(const struct imapc_command_reply *reply,
                        imapc_save_appenduid(ctx->ctx, reply, &uid);
                imapc_save_add_to_index(ctx->ctx, uid);
                ctx->ret = 0;
+       } else if (imapc_storage_client_handle_auth_failure(ctx->ctx->mbox->storage->client)) {
+               ctx->ret = -1;
        } else if (reply->state == IMAPC_COMMAND_STATE_NO) {
                imapc_copy_error_from_reply(ctx->ctx->mbox->storage,
                                            MAIL_ERROR_PARAMS, reply);