diff --git a/src/sbbs3/chat.cpp b/src/sbbs3/chat.cpp
index 542417e7f13d8cab2ccea77bc120230f27ef3a89..8db216f8471368210f34c25a3fbf5dcc943491db 100644
--- a/src/sbbs3/chat.cpp
+++ b/src/sbbs3/chat.cpp
@@ -1210,6 +1210,7 @@ void sbbs_t::nodemsg()
 	char 	tmp[512];
 	int 	i,usernumber,done=0;
 	node_t	node,savenode;
+	time_t	last=0;
 
 	if(nodemsg_inside>1)	/* nested once only */
 		return;
@@ -1231,26 +1232,29 @@ void sbbs_t::nodemsg()
 				break;
 			if(sys_status&SS_ABORT)
 				break;
-			getnodedat(cfg.node_num,&thisnode,0);
-			if(thisnode.misc&(NODE_MSGW|NODE_NMSG)) {
-				lncntr=0;	/* prevent pause prompt */
-				SAVELINE;
-				CRLF;
-				if(thisnode.misc&NODE_NMSG)
-					getnmsg();
-				if(thisnode.misc&NODE_MSGW)
-					getsmsg(useron.number);
-				CRLF;
-				RESTORELINE; }
-			else
-				nodesync();
-			gettimeleft();
-			checkline(); }
+			if(last!=now && getnodedat(cfg.node_num,&thisnode,false)==0) {
+				if(thisnode.misc&(NODE_MSGW|NODE_NMSG)) {
+					lncntr=0;	/* prevent pause prompt */
+					SAVELINE;
+					CRLF;
+					if(thisnode.misc&NODE_NMSG)
+						getnmsg();
+					if(thisnode.misc&NODE_MSGW)
+						getsmsg(useron.number);
+					CRLF;
+					RESTORELINE; }
+				else
+					nodesync();
+				last=now;
+			}
+			gettimeleft();	// sets 'now'
+		}
 
 		if(!online || sys_status&SS_ABORT) {
 			sys_status&=~SS_ABORT;
 			CRLF;
-			break; }
+			break; 
+		}
 
 		switch(toupper(ch)) {
 			case 'T':   /* Telegram */