]> 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)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 24 Aug 2023 16:49:52 +0000 (16:49 +0000)
src/lib-dict/dict-redis.c

index 8749f3c7cd394773b949c712bb30f38b7163b5f1..51eb322c9bf26447201b413a29128d0f3e7251ad 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);
@@ -680,7 +681,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;
@@ -691,8 +691,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);