]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dict: redis_reply_callback() - Don't crash if there is no callback
authorMarco Bettini <marco.bettini@open-xchange.com>
Tue, 16 May 2023 09:40:55 +0000 (09:40 +0000)
committerMarco Bettini <marco.bettini@open-xchange.com>
Thu, 18 May 2023 09:00:41 +0000 (09:00 +0000)
src/lib-dict/dict-redis.c

index de6b06dabf9d75ace549155a0399a2d01a9c9495..b14376eb2b40e3fbe4b5090b63806de263b41880 100644 (file)
@@ -83,6 +83,7 @@ static void redis_reply_callback(struct redis_connection *conn,
                                 const struct redis_dict_reply *reply,
                                 const struct dict_commit_result *result)
 {
+       i_assert(reply->callback != NULL);
        if (conn->dict->dict.prev_ioloop != NULL)
                io_loop_set_current(conn->dict->dict.prev_ioloop);
        reply->callback(result, reply->context);
@@ -679,7 +680,6 @@ static void redis_transaction_rollback(struct dict_transaction_context *_ctx)
        struct redis_dict_transaction_context *ctx =
                (struct redis_dict_transaction_context *)_ctx;
        struct redis_dict *dict = (struct redis_dict *)_ctx->dict;
-       struct redis_dict_reply *reply;
 
        i_assert(dict->transaction_open);
        dict->transaction_open = FALSE;
@@ -690,8 +690,6 @@ static void redis_transaction_rollback(struct dict_transaction_context *_ctx)
        } else if (_ctx->changed) {
                o_stream_nsend_str(dict->conn.conn.output,
                                   "*1\r\n$7\r\nDISCARD\r\n");
-               reply = array_append_space(&dict->replies);
-               reply->reply_count = 1;
                redis_input_state_add(dict, REDIS_INPUT_STATE_DISCARD);
        }
        i_free(ctx->error);