From 4db55a8857fb6689de6cc429ec9c96076a74d032 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Fri, 21 Apr 2017 09:20:22 +0200 Subject: [PATCH] Add reconnect when factorio complains about payload size Sometimes the rcon lib messes up and delivers a 4x package that makes factorio stop responding to rcon and throw an error. We catch that error and attempt to reconnect. Couldn't parse RCON data: Maximum payload size exceeded --- client.js | 13 ++++++++++++- package.json | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/client.js b/client.js index d5cc0efb..1ba280bb 100644 --- a/client.js +++ b/client.js @@ -8,6 +8,7 @@ var request = require("request") var ncp = require('ncp').ncp; var Rcon = require('simple-rcon'); var hashFiles = require('hash-files'); +var _ = require('underscore'): var libomega = require("./libomega.js"); // require config.json @@ -236,6 +237,15 @@ write-data=__PATH__executable__/../../../instances/" + instance + "\r\n\ console.log(`child process exited with code ${code}`); process.exit(); }); + serverprocess.stdout.on("data", (data) => { + // log("Stdout: " + data); + if(data.toString('utf8').includes("Couldn't parse RCON data: Maximum payload size exceeded")){ + console.error("ERROR: RCON CONNECTION BROKE DUE TO TOO LARGE PACKET!"); + console.error("Attempting reconnect..."); + client.close(); + client.connect(); + } + }); /* serverprocess.stdout.on('data', (chunk) => { console.log('OUT: ' + chunk); @@ -286,8 +296,9 @@ write-data=__PATH__executable__/../../../instances/" + instance + "\r\n\ lastSignalCheck = Date.now(); }) } - +_.once(instanceManagement); function instanceManagement() { + console.log("Started instanceManagement();") // load plugins and execute onLoad event let pluginDirectories = getDirectories("./sharedPlugins/"); let plugins = []; diff --git a/package.json b/package.json index 49ab47db..46f5a301 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "portfinder": "^1.0.9", "request": "^2.79.0", "simple-rcon": "^0.3.1", - "sync-request": "^4.0.1" + "sync-request": "^4.0.1", + "underscore": "^1.8.3" } }