From 52a29a124bec34b570f8b1f6817817e8aa0e5791 Mon Sep 17 00:00:00 2001 From: mrb Date: Fri, 2 Dec 2011 08:45:13 -0500 Subject: increase read depth by one, would allow ruby redis client to read from slowlog --- hiredis.c | 6 +++--- hiredis.h | 2 +- test.c | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/hiredis.c b/hiredis.c index 4247b82..ac5c3e3 100644 --- a/hiredis.c +++ b/hiredis.c @@ -446,10 +446,10 @@ static int processMultiBulkItem(redisReader *r) { long elements; int root = 0; - /* Set error for nested multi bulks with depth > 1 */ - if (r->ridx == 2) { + /* Set error for nested multi bulks with depth > 2 */ + if (r->ridx == 3) { __redisReaderSetError(r,REDIS_ERR_PROTOCOL, - "No support for nested multi bulk replies with depth > 1"); + "No support for nested multi bulk replies with depth > 2"); return REDIS_ERR; } diff --git a/hiredis.h b/hiredis.h index 3c3491c..8358375 100644 --- a/hiredis.h +++ b/hiredis.h @@ -123,7 +123,7 @@ typedef struct redisReader { size_t pos; /* Buffer cursor */ size_t len; /* Buffer length */ - redisReadTask rstack[3]; + redisReadTask rstack[4]; int ridx; /* Index of current read task */ void *reply; /* Temporary reply pointer */ diff --git a/test.c b/test.c index 0dde686..ca98f9b 100644 --- a/test.c +++ b/test.c @@ -225,11 +225,12 @@ static void test_reply_reader(void) { strcasecmp(reader->errstr,"Protocol error, got \"@\" as reply type byte") == 0); redisReaderFree(reader); - test("Set error on nested multi bulks with depth > 1: "); + test("Set error on nested multi bulks with depth > 2: "); reader = redisReaderCreate(); redisReaderFeed(reader,(char*)"*1\r\n",4); redisReaderFeed(reader,(char*)"*1\r\n",4); redisReaderFeed(reader,(char*)"*1\r\n",4); + redisReaderFeed(reader,(char*)"*1\r\n",4); ret = redisReaderGetReply(reader,NULL); test_cond(ret == REDIS_ERR && strncasecmp(reader->errstr,"No support for",14) == 0); -- cgit v1.2.3