increase read depth by one, would allow ruby redis client to read from slowlog
This commit is contained in:
parent
4aa3179332
commit
52a29a124b
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
3
test.c
3
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);
|
||||
|
Loading…
Reference in New Issue
Block a user