aeCreateFileEvent(config.el,c->fd, AE_WRITABLE,writeHandler,c,NULL);
sdsfree(c->ibuf);
c->ibuf = sdsempty();
- c->readlen = (c->replytype == REPLY_BULK) ? -1 : 0;
+ c->readlen = (c->replytype == REPLY_BULK ||
+ c->replytype == REPLY_MBULK) ? -1 : 0;
c->mbulk = -1;
c->written = 0;
c->state = CLIENT_SENDQUERY;
*p = '\0';
*(p-1) = '\0';
c->readlen = atoi(c->ibuf+1)+2;
+ // printf("BULK ATOI: %s\n", c->ibuf+1);
/* Handle null bulk reply "$-1" */
if (c->readlen-2 == -1) {
clientDone(c);
clientDone(c);
return;
}
+ // printf("%p) %d elements list\n", c, c->mbulk);
/* Leave all the rest in the input buffer */
c->ibuf = sdsrange(c->ibuf,(p-c->ibuf)+1,-1);
goto processdata;
(c->replytype == REPLY_BULK)) && c->readlen != -1 &&
(unsigned)c->readlen <= sdslen(c->ibuf))
{
+ // printf("BULKSTATUS mbulk:%d readlen:%d sdslen:%d\n",
+ // c->mbulk,c->readlen,sdslen(c->ibuf));
if (c->replytype == REPLY_BULK) {
clientDone(c);
} else if (c->replytype == REPLY_MBULK) {
+ // printf("%p) %d (%d)) ",c, c->mbulk, c->readlen);
+ // fwrite(c->ibuf,c->readlen,1,stdout);
+ // printf("\n");
if (--c->mbulk == 0) {
clientDone(c);
} else {
}
do {
-#if 0
prepareForBenchmark();
c = createClient();
if (!c) exit(1);
aeMain(config.el);
endBenchmark("PING");
-#endif
prepareForBenchmark();
c = createClient();
if (!c) exit(1);
aeMain(config.el);
endBenchmark("LPUSH (again, in order to bench LRANGE)");
-#if 0
prepareForBenchmark();
c = createClient();
if (!c) exit(1);
createMissingClients(c);
aeMain(config.el);
endBenchmark("LRANGE (first 450 elements)");
-#endif
prepareForBenchmark();
c = createClient();