Skip to content

Commit 1f121fa

Browse files
author
Ruben Bridgewater
committed
Fix error messages being manipulated. Fixes #695
1 parent 91955af commit 1f121fa

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

index.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ RedisClient.prototype.install_stream_listeners = function() {
9191
self.reply_parser.execute(buffer_from_socket);
9292
});
9393

94-
this.stream.on("error", function (msg) {
95-
self.on_error(msg.message);
94+
this.stream.on("error", function (err) {
95+
self.on_error(err);
9696
});
9797

9898
this.stream.on("close", function () {
@@ -148,19 +148,18 @@ RedisClient.prototype.flush_and_error = function (error) {
148148
this.command_queue = new Queue();
149149
};
150150

151-
RedisClient.prototype.on_error = function (msg) {
151+
RedisClient.prototype.on_error = function (err) {
152152
if (this.closing) {
153153
return;
154154
}
155155

156-
var message = "Redis connection to " + this.address + " failed - " + msg;
156+
err.message = "Redis connection to " + this.address + " failed - " + err.message;
157157

158-
debug(message);
158+
debug(err.message);
159159

160160
this.connected = false;
161161
this.ready = false;
162-
163-
this.emit("error", new Error(message));
162+
this.emit("error", err);
164163
// "error" events get turned into exceptions if they aren't listened for. If the user handled this error
165164
// then we should try to reconnect.
166165
this.connection_gone("error");
@@ -346,7 +345,8 @@ RedisClient.prototype.on_info_cmd = function (err, res) {
346345
var line, retry_time, parts, sub_parts;
347346

348347
if (err) {
349-
return self.emit("error", new Error("Ready check failed: " + err.message));
348+
err.message = "Ready check failed: " + err.message;
349+
return self.emit("error", err);
350350
}
351351

352352
for (i = 0; i < lines.length; i++) {

test/node_redis.spec.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,12 @@ describe("The node_redis client", function () {
765765
assert(i, 3);
766766
assert.strictEqual(client.offline_queue.length, 0);
767767
done();
768+
} else {
769+
assert.equal(err.code, 'ECONNREFUSED');
770+
assert.equal(err.errno, 'ECONNREFUSED');
771+
assert.equal(err.syscall, 'connect');
772+
assert.equal(err.address, '127.0.0.1');
773+
assert.equal(err.port, 9999);
768774
}
769775
});
770776

@@ -785,7 +791,7 @@ describe("The node_redis client", function () {
785791
});
786792

787793
describe('false', function () {
788-
it("does emit an error and does not enqueues operation", function (done) {
794+
it("emit an error and does not enqueues operation", function (done) {
789795
var client = redis.createClient(9999, null, {
790796
parser: parser,
791797
max_attempts: 0,
@@ -840,6 +846,12 @@ describe("The node_redis client", function () {
840846
if (/Redis connection in broken state:/.test(err.message)) {
841847
assert.equal(client.command_queue.length, 0);
842848
done();
849+
} else {
850+
assert.equal(err.code, 'ECONNREFUSED');
851+
assert.equal(err.errno, 'ECONNREFUSED');
852+
assert.equal(err.syscall, 'connect');
853+
assert.equal(err.address, '127.0.0.2');
854+
assert.equal(err.port, 6370);
843855
}
844856
});
845857
});

0 commit comments

Comments
 (0)