From 7a5d56a9207016110bbae86cdce1e1ae5caa75c0 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Sat, 30 Nov 2024 18:02:20 +0000 Subject: [PATCH] Fix delay node not dropping when nodeMessageBufferMaxLength is set to close #4966 --- .../@node-red/nodes/core/function/89-delay.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/function/89-delay.js b/packages/node_modules/@node-red/nodes/core/function/89-delay.js index 8f9964115..91e4126ed 100644 --- a/packages/node_modules/@node-red/nodes/core/function/89-delay.js +++ b/packages/node_modules/@node-red/nodes/core/function/89-delay.js @@ -291,11 +291,12 @@ module.exports = function(RED) { } } else if (!msg.hasOwnProperty("reset")) { - if (maxKeptMsgsCount(node) > 0) { + if (maxKeptMsgsCount(node) > 0 && !node.drop) { if (node.intervalID === -1) { node.send(msg); node.intervalID = setInterval(sendMsgFromBuffer, node.rate); - } else { + } + else { if (node.allowrate && msg.hasOwnProperty("rate") && !isNaN(parseFloat(msg.rate)) && node.rate !== msg.rate) { node.rate = msg.rate; clearInterval(node.intervalID); @@ -304,7 +305,8 @@ module.exports = function(RED) { if (node.buffer.length < _maxKeptMsgsCount) { var m = RED.util.cloneMessage(msg); node.buffer.push({msg: m, send: send, done: done}); - } else { + } + else { node.trace("dropped due to buffer overflow. msg._msgid = " + msg._msgid); node.droppedMsgs++; } @@ -325,7 +327,8 @@ module.exports = function(RED) { else if ( ( (timeSinceLast[0] * SECONDS_TO_NANOS) + timeSinceLast[1] ) > (node.rate * MILLIS_TO_NANOS) ) { node.lastSent = process.hrtime(); send(msg); - } else if (node.outputs === 2) { + } + else if (node.outputs === 2) { send([null,msg]) } }