diff --git a/src/sbbs3/getnode.cpp b/src/sbbs3/getnode.cpp
index 3b39caeeead3e42f0af2a665b0adfadcaab62110..68d2f4c449fc25c5541706eccaebe6661bffa6be 100644
--- a/src/sbbs3/getnode.cpp
+++ b/src/sbbs3/getnode.cpp
@@ -309,6 +309,18 @@ int sbbs_t::getsmsg(int usernumber)
 	char	str[MAX_PATH+1], *buf;
     int		file;
     long	length;
+	node_t	node;
+	int		i;
+
+	for(i=1;i<=cfg.sys_nodes;i++) {	/* clear msg waiting flag */
+		if(getnodedat(i,&node,true)==0) {
+			if(node.useron==usernumber
+					&& (node.status==NODE_INUSE || node.status==NODE_QUIET)
+					&& node.misc&NODE_MSGW)
+				node.misc&=~NODE_MSGW;
+			putnodedat(i,&node); 
+		} 
+	}
 
 	sprintf(str,"%smsgs/%4.4u.msg",cfg.data_dir,usernumber);
 	if(flength(str)<1L)
@@ -337,12 +349,6 @@ int sbbs_t::getsmsg(int usernumber)
 		|| sys_status&SS_IN_CTRLP) {
 		CRLF; 
 	}
-	if(thisnode.misc&NODE_MSGW) {
-		if(getnodedat(cfg.node_num,&thisnode,true)==0) {
-			thisnode.misc&=~NODE_MSGW;
-			putnodedat(cfg.node_num,&thisnode); 
-		}
-	}
 	putmsg(buf,P_NOATCODES);
 	free(buf);
 
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index a25b2092d8549863e009dbe0ee3d594e1f630a3a..df90a5ac0ec1b4f933bbc58225e2acc45d0148c2 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -1150,6 +1150,17 @@ char* DLLCALL getsmsg(scfg_t* cfg, int usernumber)
 	if(!VALID_CFG(cfg) || usernumber<1)
 		return(NULL);
 
+	for(i=1;i<=cfg->sys_nodes;i++) {	/* clear msg waiting flag */
+		getnodedat(cfg,i,&node,NULL);
+		if(node.useron==usernumber
+			&& (node.status==NODE_INUSE || node.status==NODE_QUIET)
+			&& node.misc&NODE_MSGW) {
+			getnodedat(cfg,i,&node,&file);
+			node.misc&=~NODE_MSGW;
+			putnodedat(cfg,i,&node,file); 
+		} 
+	}
+
 	sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber);
 	if(flength(str)<1L)
 		return(NULL);
@@ -1169,17 +1180,6 @@ char* DLLCALL getsmsg(scfg_t* cfg, int usernumber)
 	close(file);
 	buf[length]=0;
 
-	for(i=1;i<=cfg->sys_nodes;i++) {	/* clear msg waiting flag */
-		getnodedat(cfg,i,&node,NULL);
-		if(node.useron==usernumber
-			&& (node.status==NODE_INUSE || node.status==NODE_QUIET)
-			&& node.misc&NODE_MSGW) {
-			getnodedat(cfg,i,&node,&file);
-			node.misc&=~NODE_MSGW;
-			putnodedat(cfg,i,&node,file); 
-		} 
-	}
-
 	return(buf);	/* caller must free */
 }