From 97621b41b9419de5521a040c1e2dc88324b15059 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 4 Feb 2015 10:27:02 +0000 Subject: [PATCH] Ensure deleted core nodes are removed from config list --- red/nodes/registry.js | 19 ++++++++++++++++--- red/server.js | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/red/nodes/registry.js b/red/nodes/registry.js index 65c788609..fb547f221 100644 --- a/red/nodes/registry.js +++ b/red/nodes/registry.js @@ -419,9 +419,22 @@ var registry = (function() { var removed = false; for (var mod in moduleConfigs) { if (moduleConfigs.hasOwnProperty(mod)) { - if (moduleConfigs[mod] && !moduleNodes[mod]) { - var nodes = moduleConfigs[mod].nodes; - for (var node in nodes) { + var nodes = moduleConfigs[mod].nodes; + var node; + if (mod == "node-red") { + // For core nodes, look for nodes that are enabled, !loaded and !errored + for (node in nodes) { + if (nodes.hasOwnProperty(node)) { + var n = nodes[node]; + if (n.enabled && !n.err && !n.loaded) { + registry.removeNode(mod+"/"+node); + removed = true; + } + } + } + } else if (moduleConfigs[mod] && !moduleNodes[mod]) { + // For node modules, look for missing ones + for (node in nodes) { if (nodes.hasOwnProperty(node)) { registry.removeNode(mod+"/"+node); removed = true; diff --git a/red/server.js b/red/server.js index e68626530..e8725d63d 100644 --- a/red/server.js +++ b/red/server.js @@ -81,7 +81,7 @@ function start() { for (i in missingModules) { if (missingModules.hasOwnProperty(i)) { log.warn(" - "+i+": "+missingModules[i].join(", ")); - if (settings.autoInstallModules) { + if (settings.autoInstallModules && i != "node-red") { installModule(i).otherwise(function(err) { // Error already reported. Need the otherwise handler // to stop the error propagating any further