Skip to content

Commit e8745af

Browse files
committed
Merge pull request #912 from komachi/master
Fix return_buffers in pub/sub mode. Fixes #911
2 parents 2cc01f5 + 3e64ce7 commit e8745af

File tree

2 files changed

+55
-3
lines changed

2 files changed

+55
-3
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ RedisClient.prototype.return_reply = function (reply) {
645645
}
646646
} else if (this.pub_sub_mode || command_obj && command_obj.sub_command) {
647647
if (Array.isArray(reply)) {
648-
if (!command_obj || command_obj.buffer_args === false) {
648+
if ((!command_obj || command_obj.buffer_args === false) && !this.options.return_buffers) {
649649
reply = utils.reply_to_strings(reply);
650650
}
651651
type = reply[0].toString();

test/return_buffers.spec.js

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var redis = config.redis;
77

88
describe("return_buffers", function () {
99

10-
helper.allTests(function(parser, ip) {
10+
helper.allTests(function(parser, ip, basicArgs) {
1111

1212
describe("using " + parser + " and " + ip, function () {
1313
var client;
@@ -229,6 +229,58 @@ describe("return_buffers", function () {
229229
});
230230
});
231231
});
232+
233+
describe('publish/subscribe', function (done) {
234+
var pub;
235+
var sub;
236+
var channel = "test channel";
237+
var message = new Buffer("test message");
238+
239+
var args = config.configureClient(parser, ip, {
240+
return_buffers: true
241+
});
242+
243+
beforeEach(function (done) {
244+
var pubConnected;
245+
var subConnected;
246+
247+
pub = redis.createClient.apply(redis.createClient, basicArgs);
248+
sub = redis.createClient.apply(redis.createClient, args);
249+
pub.once("connect", function () {
250+
pub.flushdb(function () {
251+
pubConnected = true;
252+
if (subConnected) {
253+
done();
254+
}
255+
});
256+
});
257+
sub.once("connect", function () {
258+
subConnected = true;
259+
if (pubConnected) {
260+
done();
261+
}
262+
});
263+
});
264+
265+
it('receives buffer messages', function (done) {
266+
sub.on("subscribe", function (chnl, count) {
267+
pub.publish(channel, message);
268+
});
269+
270+
sub.on("message", function (chnl, msg) {
271+
assert.strictEqual(true, Buffer.isBuffer(msg));
272+
assert.strictEqual("<Buffer 74 65 73 74 20 6d 65 73 73 61 67 65>", msg.inspect());
273+
return done();
274+
});
275+
276+
sub.subscribe(channel);
277+
});
278+
279+
afterEach(function () {
280+
sub.end();
281+
pub.end();
282+
});
283+
});
232284
});
233285
});
234-
});
286+
});

0 commit comments

Comments
 (0)