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 */ }