Commit 663d6d12 authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

Properly reset state after protocol error in reply reader

parent 864bce94
...@@ -493,7 +493,7 @@ static void redisSetReplyReaderError(redisReader *r, sds err) { ...@@ -493,7 +493,7 @@ static void redisSetReplyReaderError(redisReader *r, sds err) {
if (r->buf != NULL) { if (r->buf != NULL) {
sdsfree(r->buf); sdsfree(r->buf);
r->buf = sdsempty(); r->buf = sdsempty();
r->pos = 0; r->pos = r->len = 0;
} }
r->ridx = -1; r->ridx = -1;
r->error = err; r->error = err;
......
...@@ -318,6 +318,15 @@ static void test_reply_reader(void) { ...@@ -318,6 +318,15 @@ static void test_reply_reader(void) {
ret = redisReplyReaderGetReply(reader,&reply); ret = redisReplyReaderGetReply(reader,&reply);
test_cond(ret == REDIS_OK && reply == (void*)REDIS_REPLY_STATUS); test_cond(ret == REDIS_OK && reply == (void*)REDIS_REPLY_STATUS);
redisReplyReaderFree(reader); redisReplyReaderFree(reader);
test("Properly reset state after protocol error: ");
reader = redisReplyReaderCreate();
redisReplyReaderSetReplyObjectFunctions(reader,NULL);
redisReplyReaderFeed(reader,(char*)"x",1);
ret = redisReplyReaderGetReply(reader,&reply);
assert(ret == REDIS_ERR);
ret = redisReplyReaderGetReply(reader,&reply);
test_cond(ret == REDIS_OK && reply == NULL)
} }
static void test_throughput(void) { static void test_throughput(void) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment