From 5493e7ff3a697da0fb71c0e84274e0528d0a0be2 Mon Sep 17 00:00:00 2001 From: Mehdi Abby Date: Tue, 24 Jan 2017 15:31:12 +0100 Subject: [PATCH] Fix websocket crashs. Catching Invalid JSON Parsed messages --- websocket_server.js | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/websocket_server.js b/websocket_server.js index 7f311e47..bb9ce183 100644 --- a/websocket_server.js +++ b/websocket_server.js @@ -163,31 +163,36 @@ udpServer.on('listening', function() { }); udpServer.on('message', function(message, remote) { - var messageObject = JSON.parse(message); - var body = messageObject.data; + var messageObject; + var body; var data = {}; try { + messageObject = JSON.parse(message); + body = messageObject.data; var data = JSON.parse(body); if (data.message == "ping") { - return; + return; + } + } catch (e) { + } - } catch (e) { - - } - if (messageObject.scope == "alive") { - io.sockets.in('alive').emit('aliveHandler', {data: body}); - io.sockets.in('relay').emit('relay', {channel: 'alive', 'method': 'aliveHandler', content: body}); - } else if (messageObject.scope == "rcon") { - io.sockets.in('rcon-' + data.id).emit('rconHandler', body); - } else if (messageObject.scope == "logger") { - io.sockets.in('logger-' + data.id).emit('loggerHandler', body); - io.sockets.in('loggersGlobal').emit('loggerGlobalHandler', body); - } else if (messageObject.scope == "match") { - io.sockets.in('matchs').emit('matchsHandler', body); - io.sockets.in('relay').emit('relay', {channel: 'matchs', 'method': 'matchsHandler', content: body}); - } else if (messageObject.scope == "livemap") { - io.sockets.in('livemap-' + data.id).emit('livemapHandler', body); - io.sockets.in('relay').emit('relay', {channel: 'livemap-' + data.id, 'method': 'livemapHandler', content: body}); + + if (messageObject != null){ + if (messageObject.scope == "alive") { + io.sockets.in('alive').emit('aliveHandler', {data: body}); + io.sockets.in('relay').emit('relay', {channel: 'alive', 'method': 'aliveHandler', content: body}); + } else if (messageObject.scope == "rcon") { + io.sockets.in('rcon-' + data.id).emit('rconHandler', body); + } else if (messageObject.scope == "logger") { + io.sockets.in('logger-' + data.id).emit('loggerHandler', body); + io.sockets.in('loggersGlobal').emit('loggerGlobalHandler', body); + } else if (messageObject.scope == "match") { + io.sockets.in('matchs').emit('matchsHandler', body); + io.sockets.in('relay').emit('relay', {channel: 'matchs', 'method': 'matchsHandler', content: body}); + } else if (messageObject.scope == "livemap") { + io.sockets.in('livemap-' + data.id).emit('livemapHandler', body); + io.sockets.in('relay').emit('relay', {channel: 'livemap-' + data.id, 'method': 'livemapHandler', content: body}); + } } });