From 4b7f5ae59e34df1b6b0ed74e6668d89316c248d2 Mon Sep 17 00:00:00 2001 From: Stephan Zeissler Date: Tue, 30 Oct 2012 22:53:24 +0100 Subject: [PATCH] Fixes handling of empty messages --- amqp.js | 4 ++++ test/test-receive-empty-messages.js | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 test/test-receive-empty-messages.js diff --git a/amqp.js b/amqp.js index 7f7ff54..a5363a5 100644 --- a/amqp.js +++ b/amqp.js @@ -2002,6 +2002,10 @@ Queue.prototype._onContentHeader = function (channel, classInfo, weight, propert this.currentMessage.size = size; this.emit('rawMessage', this.currentMessage); + if (size === 0) { + // If the message has no body, directly emit 'end' + this.currentMessage.emit('end'); + } }; Queue.prototype._onContent = function (channel, data) { diff --git a/test/test-receive-empty-messages.js b/test/test-receive-empty-messages.js new file mode 100644 index 0000000..55eea26 --- /dev/null +++ b/test/test-receive-empty-messages.js @@ -0,0 +1,26 @@ +require('./harness'); + +var timeout = null; +connection.addListener('ready', function () { + var exc = connection.exchange('node-json-exchange'); + + connection.queue('node-json-queue', function(q) { + q.bind('node-json-exchange', '*'); + + q.subscribe(function (json, headers, deliveryInfo) { + clearTimeout(timeout); + connection.end(); + }).addCallback(function () { + puts("Publishing one empty message."); + exc.publish('node-json-queue', ''); + }); + }); +}); + +timeout = setTimeout(function() { + puts("ERROR: Timeout occured!!!!!!!"); + connection.end(); + assert.ok(1, 2); +}, 5000); + +