From 6af93d70a4b9fb27526a393bd58e4da3ad5d16f2 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sun, 29 Nov 2020 12:27:36 -0800
Subject: [PATCH] Fallback to the "first node" configuration

If a node's configuration can't be loaded (e.g. nodeX/node.cnf is missing), fall-back and load the "first node" (e.g. Node1) configuration. On recent *nix installs (since the migration to Git), the node2+/node.cnf files were not copied/created, so let's solve that soon-to-be-FAQ now.
---
 src/sbbs3/main.cpp | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 672f0bfb47..81afb036fb 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -5716,16 +5716,20 @@ NO_SSH:
 			lprintf(LOG_INFO,"Node %d Loading configuration files from %s", cfg->node_num, cfg->ctrl_dir);
 			SAFECOPY(logstr,UNKNOWN_LOAD_ERROR);
 			if(!load_cfg(cfg, node_text[i - 1], TRUE, logstr)) {
-				lprintf(LOG_CRIT,"!ERROR %s",logstr);
-				lprintf(LOG_CRIT,"!FAILED to load configuration files");
-				sbbs->bprintf(" FAILED: %s", logstr);
-				client_off(client_socket);
-				SSH_END(client_socket);
-				close_socket(client_socket);
-				sbbs->getnodedat(cfg->node_num,&node,true);
-				node.status = NODE_WFC;
-				sbbs->putnodedat(cfg->node_num,&node);
-				continue;
+				cfg->node_num = first_node;
+				if(!load_cfg(cfg, node_text[i - 1], TRUE, logstr)) {
+					lprintf(LOG_CRIT,"!ERROR %s",logstr);
+					lprintf(LOG_CRIT,"!FAILED to load configuration files");
+					sbbs->bprintf("\r\nFAILED: %s", logstr);
+					client_off(client_socket);
+					SSH_END(client_socket);
+					close_socket(client_socket);
+					sbbs->getnodedat(cfg->node_num,&node,true);
+					node.status = NODE_WFC;
+					sbbs->putnodedat(cfg->node_num,&node);
+					continue;
+				}
+				cfg->node_num = i; // correct the node number
 			}
 			if(node.misc & NODE_RRUN) {
 				sbbs->getnodedat(cfg->node_num,&node,true);
-- 
GitLab