diff --git a/lib/client/tcp-client.js b/lib/client/tcp-client.js index da1c86b..f0f1c1f 100644 --- a/lib/client/tcp-client.js +++ b/lib/client/tcp-client.js @@ -28,7 +28,22 @@ TcpClient.prototype.connect = function(callback) { self.client = net.connect({host: self.host, port: self.port}, function() { self.client.on('data', function(data) { self.responseBuffer += data.toString(); - if (self.responseBuffer.substring(self.responseBuffer.length - 2, self.responseBuffer.length) == FS + CR) { + + /* + 'Sometimes' the responseBuffer contains things like FS or CR, and so + self.responseBuffer.substring() stops copying early, and the compare to FS+CR fails + So try a real parse, see if it's a response. + */ + var _parsed = false; + var _ackish = false; + try{ + const ackish = self.parser.parse(self.responseBuffer.substring(1, self.responseBuffer.length - 1)); + _parsed = true; + }catch(e){ + console.log('ackish',e) + } + + if (self.responseBuffer.substring(self.responseBuffer.length - 2, self.responseBuffer.length) == FS + CR || _parsed) { var ack = self.parser.parse(self.responseBuffer.substring(1, self.responseBuffer.length - 2)); self.callback(null, ack); self.responseBuffer = "";