From 273d9c76a75695916d0edd77a2960666fb022836 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 6 Oct 2021 17:33:04 +0100 Subject: [PATCH] Add fallback when logging uncaughtExceptions --- packages/node_modules/node-red/red.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/node_modules/node-red/red.js b/packages/node_modules/node-red/red.js index e6eda0118..02c1359cf 100755 --- a/packages/node_modules/node-red/red.js +++ b/packages/node_modules/node-red/red.js @@ -234,11 +234,11 @@ httpsPromise.then(function(startupHttps) { // Get the result of the function, because createServer doesn't accept functions as input Promise.resolve(settings.https()).then(function(refreshedHttps) { if (refreshedHttps) { - // The key/cert needs to be updated in the NodeJs http(s) server, when no key/cert is yet available or when the key/cert has changed. + // The key/cert needs to be updated in the NodeJs http(s) server, when no key/cert is yet available or when the key/cert has changed. // Note that the refreshed key/cert can be supplied as a string or a buffer. var updateKey = (server.key == undefined || (Buffer.isBuffer(server.key) && !server.key.equals(refreshedHttps.key)) || (typeof server.key == "string" && server.key != refreshedHttps.key)); var updateCert = (server.cert == undefined || (Buffer.isBuffer(server.cert) && !server.cert.equals(refreshedHttps.cert)) || (typeof server.cert == "string" && server.cert != refreshedHttps.cert)); - + // Only update the credentials in the server when key or cert has changed if(updateKey || updateCert) { server.setSecureContext(refreshedHttps); @@ -455,9 +455,17 @@ httpsPromise.then(function(startupHttps) { process.on('uncaughtException',function(err) { util.log('[red] Uncaught Exception:'); if (err.stack) { - RED.log.error(err.stack); + try { + RED.log.error(err.stack); + } catch(err2) { + util.log(err.stack); + } } else { - RED.log.error(err); + try { + RED.log.error(err); + } catch(err2) { + util.log(err); + } } process.exit(1); });