]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-redis: Fix crash when using synchronous commit
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 15 Jun 2022 09:19:55 +0000 (12:19 +0300)
committerMarkus Valentin <markus.valentin@open-xchange.com>
Tue, 18 Oct 2022 07:54:44 +0000 (09:54 +0200)
Redis is usually used via dict proxy process, which always uses async
commit, so this didn't matter so much.

src/lib-dict/dict-redis.c

index 01ec7b0d401ce3e7b69222540e13c1fdbc1c9c1b..8749f3c7cd394773b949c712bb30f38b7163b5f1 100644 (file)
@@ -650,6 +650,7 @@ redis_transaction_commit(struct dict_transaction_context *_ctx, bool async,
                redis_disconnected(&dict->conn, ctx->error);
                result.ret = -1;
                result.error = ctx->error;
+               callback(&result, context);
        } else if (_ctx->changed) {
                i_assert(ctx->cmd_count > 0);
 
@@ -667,8 +668,9 @@ redis_transaction_commit(struct dict_transaction_context *_ctx, bool async,
                        return;
                }
                redis_wait(dict);
+       } else {
+               callback(&result, context);
        }
-       callback(&result, context);
        i_free(ctx->error);
        i_free(ctx);
 }