diff --git a/red/nodes/Node.js b/red/nodes/Node.js index 0e6fc5259..58ad4fd2c 100644 --- a/red/nodes/Node.js +++ b/red/nodes/Node.js @@ -29,119 +29,128 @@ function Node(n) { if (n.name) { this.name = n.name; } - this.wires = n.wires||[]; + this.wires = n.wires || []; } -util.inherits(Node,EventEmitter); +util.inherits(Node, EventEmitter); Node.prototype._on = Node.prototype.on; -Node.prototype.on = function(event,callback) { +Node.prototype.on = function(event, callback) { var node = this; if (event == "close") { if (callback.length == 1) { this.close = function() { return when.promise(function(resolve) { - callback.call(node,function() { + callback.call(node, function() { resolve(); }); }); - } + }; } else { this.close = callback; } } else { - this._on(event,callback); + this._on(event, callback); } -} +}; -Node.prototype.close = function() { +Node.prototype.close = function() {}; + +function cloneMessage(msg) { + // Temporary fix for #97 + // TODO: remove this http-node-specific fix somehow + var req = msg.req; + var res = msg.res; + delete msg.req; + delete msg.res; + var m = clone(msg); + if (req) { + m.req = req; + msg.req = req; + } + if (res) { + m.res = res; + msg.res = res; + } + return m; } Node.prototype.send = function(msg) { + var msgSent = false; // instanceof doesn't work for some reason here - if (msg == null) { + if (msg === null || typeof msg === "undefined") { return; } else if (!util.isArray(msg)) { msg = [msg]; } - for (var i=0;i