From 655681f79001b471b93b601ea2716957b54ee2d3 Mon Sep 17 00:00:00 2001 From: Jeff Barczewski Date: Tue, 26 Mar 2013 10:49:13 -0500 Subject: [PATCH] fix empty unsub/punsub TypeError When unsubscribe or punsubscribe is called and it has no subscriptions, the reply[1] is a null which causes `TypeError: Cannot call method 'toString' of null` Check if reply[1] is null before calling toString otherwise just pass null. --- index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index e82d2e5f49..6dab1a73c8 100644 --- a/index.js +++ b/index.js @@ -629,10 +629,12 @@ RedisClient.prototype.return_reply = function (reply) { } // subscribe commands take an optional callback and also emit an event, but only the first response is included in the callback // TODO - document this or fix it so it works in a more obvious way + // reply[1] can be null + var reply1String = (reply[1] === null) ? null : reply[1].toString(); if (command_obj && typeof command_obj.callback === "function") { - try_callback(command_obj.callback, reply[1].toString()); + try_callback(command_obj.callback, reply1String); } - this.emit(type, reply[1].toString(), reply[2]); // channel, count + this.emit(type, reply1String, reply[2]); // channel, count } else { throw new Error("subscriptions are active but got unknown reply type " + type); } @@ -708,7 +710,7 @@ RedisClient.prototype.send_command = function (command, args, callback) { return callback(err); } } - + buffer_args = false; for (i = 0, il = args.length, arg; i < il; i += 1) { if (Buffer.isBuffer(args[i])) {