diff --git a/index.js b/index.js index 387de338a9..229d01e53a 100644 --- a/index.js +++ b/index.js @@ -118,6 +118,9 @@ RedisReplyParser.prototype.execute = function (incoming_buf) { this.multi_bulk_length = parseInt(small_toString(this.tmp_buffer), 10); this.multi_bulk_replies = []; this.state = "type"; + if (0 == this.multi_bulk_length) { + this.send_reply([]); + } } else { this.emit("error", new Error("didn't see LF after NL reading multi bulk count")); this.state = "type"; // try to start over with next data chunk diff --git a/test.js b/test.js index 505fca0230..2e60c97230 100644 --- a/test.js +++ b/test.js @@ -209,6 +209,15 @@ tests.KEYS = function () { }); }; +tests.MULTIBULK_ZERO_LENGTH = function () { + var name = "MULTIBULK_ZERO_LENGTH"; + client.KEYS(['users:*'], function(err, results){ + assert.strictEqual(null, err, 'error on empty multibulk reply'); + assert.strictEqual(0, results.length); + next(name); + }); +}; + tests.RANDOMKEY = function () { var name = "RANDOMKEY"; client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", name));