From 9544a3c6bf36555a2babc6bb0d81d4f2157a410b Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows 11)" <rob@synchro.net>
Date: Mon, 26 Feb 2024 23:19:52 -0800
Subject: [PATCH] Don't send NodeLoggedOn message to any nodes if user isn't
 being logged-on

If user is being kicked off for being on "More than one node at a time", then
don't send a message to other any other nodes that the user logged-on
successfully (they haven't). Previosuly, it'd send messages to all the
lower-numbered nodes that were in-use (but not by the same user).

Reported by Nelgin.
---
 src/sbbs3/logon.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 76afffdb74..90c9fa42fb 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -526,7 +526,7 @@ bool sbbs_t::logon()
 	getsmsg(useron.number); 		/* Moved from further down */
 	sync();
 	c=0;
-	for(i=1;i<=cfg.sys_nodes;i++)
+	for(i=1;i<=cfg.sys_nodes;i++) {
 		if(i!=cfg.node_num) {
 			getnodedat(i,&node,0);
 			if(!(cfg.sys_misc&SM_NONODELIST)
@@ -546,6 +546,11 @@ bool sbbs_t::logon()
 				hangup();
 				return(false); 
 			}
+		}
+	}
+	for(i=1;i<=cfg.sys_nodes;i++) {
+		if(i!=cfg.node_num) {
+			getnodedat(i,&node,0);
 			if(thisnode.status!=NODE_QUIET
 				&& (node.status==NODE_INUSE || node.status==NODE_QUIET)
 				&& !(node.misc&NODE_AOFF) && node.useron!=useron.number) {
@@ -555,6 +560,7 @@ bool sbbs_t::logon()
 						,connection));
 			} 
 		}
+	}
 
 	if(cfg.sys_exp_warn && useron.expire && useron.expire>now /* Warn user of coming */
 		&& (useron.expire-now)/(1440L*60L)<=cfg.sys_exp_warn) /* expiration */
-- 
GitLab