diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 69f84a65d044700351b63e3f817f6f71eef57a52..f179b5a412f6967524fc21c41f19ad44b8f632ec 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -71,8 +71,10 @@ bool sbbs_t::logon()
 
 	if(useron.rest&FLAG('Q'))
 		qwklogon=1;
-	if(SYSOP && !(cfg.sys_misc&SM_R_SYSOP))
+	if(SYSOP && !(cfg.sys_misc&SM_R_SYSOP)) {
+		hangup();
 		return(false);
+	}
 
 	if(useron.rest&FLAG('G')) {     /* Guest account */
 		useron.misc=(cfg.new_misc&(~ASK_NSCAN));
@@ -103,6 +105,7 @@ bool sbbs_t::logon()
 		sprintf(str,"(%04u)  %-25s  Insufficient node access"
 			,useron.number,useron.alias);
 		logline(LOG_NOTICE,"+!",str);
+		hangup();
 		return(false); 
 	}
 
@@ -114,6 +117,7 @@ bool sbbs_t::logon()
 			sprintf(str,"(%04u)  %-25s  Locked node logon attempt"
 				,useron.number,useron.alias);
 			logline(LOG_NOTICE,"+!",str);
+			hangup();
 			return(false); 
 		}
 		if(yesno(text[RemoveNodeLockQ])) {