From 45ced2a3b39d30cbb8c909e66e063ceeff05e636 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Fri, 19 Feb 2021 00:08:42 -0800
Subject: [PATCH] Automatically route in-transit mail to points to boss nodes

If the destination point node is not a linked node (does not exist in sbbsecho.ini), but the boss node is linked, automatically route to the boss node. The log entries look like this when this happens:
"Routing packet (%s) to boss-node %s"
"Routing NetMail (%s) to boss-node %s"

For poindexter FORTRAN (REALITY) - test results appreciated.

Incremented SBBSecho version to 3.13.
---
 src/sbbs3/sbbsecho.c | 17 +++++++++++++++++
 src/sbbs3/sbbsecho.h |  2 +-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index f5d085fa85..cd14226b6f 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -2624,6 +2624,14 @@ bool pack_bundle(const char *tmp_pkt, fidoaddr_t orig, fidoaddr_t dest)
 			dest=nodecfg->route;
 			lprintf(LOG_NOTICE,"Routing packet (%s) to %s",tmp_pkt, smb_faddrtoa(&dest,NULL));
 		}
+		if(nodecfg == NULL && dest.point != 0) {
+			fidoaddr_t	boss = dest;
+			boss.point = 0;
+			if((nodecfg = findnodecfg(&cfg, boss, /* exact: */true)) != NULL) {
+				dest = boss;
+				lprintf(LOG_INFO, "Routing packet (%s) to boss-node %s", tmp_pkt, smb_faddrtoa(&dest, NULL));
+			}
+		}
 	}
 	outbound = get_current_outbound(dest, cfg.use_outboxes);
 	if(outbound == NULL)
@@ -5526,6 +5534,15 @@ void pack_netmail(void)
 				lprintf(LOG_INFO, "Routing NetMail (%s) to %s",getfname(path),smb_faddrtoa(&addr,NULL));
 				nodecfg=findnodecfg(&cfg, addr,0);
 			}
+			if(nodecfg == NULL && addr.point != 0) {
+				fidoaddr_t	boss = addr;
+				boss.point = 0;
+				if((nodecfg = findnodecfg(&cfg, boss, /* exact: */true)) != NULL) {
+					addr = boss;
+					lprintf(LOG_INFO, "Routing NetMail (%s) to boss-node %s"
+						,getfname(path), smb_faddrtoa(&addr, NULL));
+				}
+			}
 		}
 		if(!bso_lock_node(addr))
 			continue;
diff --git a/src/sbbs3/sbbsecho.h b/src/sbbs3/sbbsecho.h
index dfae5fd4eb..234eaf0342 100644
--- a/src/sbbs3/sbbsecho.h
+++ b/src/sbbs3/sbbsecho.h
@@ -29,7 +29,7 @@
 #include "ini_file.h"
 
 #define SBBSECHO_VERSION_MAJOR		3
-#define SBBSECHO_VERSION_MINOR		12
+#define SBBSECHO_VERSION_MINOR		13
 
 #define SBBSECHO_PRODUCT_CODE		0x12FF	/* from http://ftsc.org/docs/ftscprod.013 */
 
-- 
GitLab