diff --git a/lib/client.js b/lib/client.js index 4c8c646..5c463e2 100644 --- a/lib/client.js +++ b/lib/client.js @@ -78,8 +78,20 @@ function BinaryClient(socket, options) { data = data.data; - - data = util.unpack(data); + try { + data = util.unpack(data); + } catch (ex) { + return self.emit('error', 'Received unparsable message: ' + ex); + } + if (!(data instanceof Array)) + return self.emit('error', 'Received non-array message'); + if (data.length != 3) + return self.emit('error', 'Received message with wrong part count: ' + data.length); + if ('number' != typeof data[0]) + return self.emit('error', 'Received message with non-number type: ' + data[0]); + if ('number' != typeof data[2]) + return self.emit('error', 'Received message with non-number streamId: ' + data[2]); + switch(data[0]) { case 0: // Reserved