From cf3ffa375db19e211e8afc9247b1ec11e5ed99eb Mon Sep 17 00:00:00 2001 From: LucasJones Date: Wed, 16 Apr 2014 03:28:29 +0100 Subject: [PATCH] Improve stratum message handling Prevent the case where multiple messages are chunked together without being processed (occasionally leading to the buffer growing too large and the client being kicked). Recognize messages consisting only of spaces as malformed. --- lib/stratum.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/stratum.js b/lib/stratum.js index c197436..d5016f1 100644 --- a/lib/stratum.js +++ b/lib/stratum.js @@ -212,10 +212,11 @@ var StratumClient = function(options){ socket.destroy(); return; } - if (dataBuffer.slice(-1) === '\n'){ + if (dataBuffer.indexOf('\n') !== -1){ var messages = dataBuffer.split('\n'); + var incomplete = dataBuffer.slice(-1) === '\n' ? '' : messages.pop(); messages.forEach(function(message){ - if (message.trim() === '') return; + if (message === '') return; var messageJson; try { messageJson = JSON.parse(message); @@ -231,7 +232,7 @@ var StratumClient = function(options){ handleMessage(messageJson); } }); - dataBuffer = ''; + dataBuffer = incomplete; } }); socket.on('close', function() {