From 6696b6661a9f52fb860703e8e406468bf1522790 Mon Sep 17 00:00:00 2001 From: Simon Hailes Date: Wed, 20 Dec 2017 16:04:32 +0000 Subject: [PATCH] When creating 'redserver' for a node, use runtime.server rather than runtime.adminApi.server, and fill runtime.server at startup with the valid http server regardless of adminApi being available. This resolves websockets not working when the adminApi (httpAdminRoot) is disabled in settings. --- red/red.js | 10 +++++++++- red/runtime/nodes/registry/loader.js | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/red/red.js b/red/red.js index 5ca42050a..7aec5750a 100644 --- a/red/red.js +++ b/red/red.js @@ -69,13 +69,21 @@ module.exports = { runtime.init(userSettings,api); api.init(httpServer,runtime); apiEnabled = true; + server = runtime.adminApi.server; + runtime.server = runtime.adminApi.server; } else { runtime.init(userSettings); apiEnabled = false; + if (httpServer){ + server = httpServer; + runtime.server = httpServer; + } else { + server = runtime.adminApi.server; + runtime.server = runtime.adminApi.server; // useless at this point, but at least harmless. + } } adminApp = runtime.adminApi.adminApp; nodeApp = runtime.nodeApp; - server = runtime.adminApi.server; return; }, start: function() { diff --git a/red/runtime/nodes/registry/loader.js b/red/runtime/nodes/registry/loader.js index 817b18668..805821a6d 100644 --- a/red/runtime/nodes/registry/loader.js +++ b/red/runtime/nodes/registry/loader.js @@ -84,7 +84,7 @@ function createNodeApi(node) { red.auth = runtime.adminApi.auth; red.httpAdmin = runtime.adminApi.adminApp; red.httpNode = runtime.nodeApp; - red.server = runtime.adminApi.server; + red.server = runtime.server; } else { //TODO: runtime.adminApi is always stubbed if not enabled, so this block // is unused - but may be needed for the unit tests