From: antirez <antirez@gmail.com>
Date: Sun, 19 Feb 2012 19:33:59 +0000 (+0100)
Subject: Applied a few modifications to hiredis to tune it for speed (redis-benchmark) and... 
X-Git-Url: https://git.saurik.com/redis.git/commitdiff_plain/8e65b6a33d01f48f469735798806877e3168cb2c?ds=inline

Applied a few modifications to hiredis to tune it for speed (redis-benchmark) and ability to read more deeply nested replies (redis-cli).
---

diff --git a/deps/hiredis/hiredis.c b/deps/hiredis/hiredis.c
index 1a57adb1..e6109db8 100644
--- a/deps/hiredis/hiredis.c
+++ b/deps/hiredis/hiredis.c
@@ -447,9 +447,9 @@ static int processMultiBulkItem(redisReader *r) {
     int root = 0;
 
     /* Set error for nested multi bulks with depth > 2 */
-    if (r->ridx == 3) {
+    if (r->ridx == 8) {
         __redisReaderSetError(r,REDIS_ERR_PROTOCOL,
-            "No support for nested multi bulk replies with depth > 2");
+            "No support for nested multi bulk replies with depth > 7");
         return REDIS_ERR;
     }
 
@@ -590,6 +590,7 @@ int redisReaderFeed(redisReader *r, const char *buf, size_t len) {
 
     /* Copy the provided buffer. */
     if (buf != NULL && len >= 1) {
+#if 0
         /* Destroy internal buffer when it is empty and is quite large. */
         if (r->len == 0 && sdsavail(r->buf) > 16*1024) {
             sdsfree(r->buf);
@@ -599,6 +600,7 @@ int redisReaderFeed(redisReader *r, const char *buf, size_t len) {
             /* r->buf should not be NULL since we just free'd a larger one. */
             assert(r->buf != NULL);
         }
+#endif
 
         newbuf = sdscatlen(r->buf,buf,len);
         if (newbuf == NULL) {
@@ -1067,7 +1069,7 @@ int redisSetTimeout(redisContext *c, struct timeval tv) {
  * After this function is called, you may use redisContextReadReply to
  * see if there is a reply available. */
 int redisBufferRead(redisContext *c) {
-    char buf[2048];
+    char buf[1024*16];
     int nread;
 
     /* Return early when the context has seen an error. */
diff --git a/deps/hiredis/hiredis.h b/deps/hiredis/hiredis.h
index 83583754..a73f50e9 100644
--- a/deps/hiredis/hiredis.h
+++ b/deps/hiredis/hiredis.h
@@ -123,7 +123,7 @@ typedef struct redisReader {
     size_t pos; /* Buffer cursor */
     size_t len; /* Buffer length */
 
-    redisReadTask rstack[4];
+    redisReadTask rstack[9];
     int ridx; /* Index of current read task */
     void *reply; /* Temporary reply pointer */