diff --git a/src/sbbs3/umonitor/umonitor.c b/src/sbbs3/umonitor/umonitor.c index 635e6bcaf17a62290717ab12cbdad04971d30bfd..eebe95cc515a0c36730594a051f14390c92a20fb 100644 --- a/src/sbbs3/umonitor/umonitor.c +++ b/src/sbbs3/umonitor/umonitor.c @@ -460,8 +460,7 @@ void node_toggles(int nodenum) { getnodedat(nodenum,&node,0); i=0; uifc.helpbuf= "`Node Toggles:`\n" - "\nToDo: Add help (Mention that changes take effect" - "\non menu exit not immediately)"; + "\nToDo: Add help (Mention that changes take effect immediately)"; while(save==0) { j=0; sprintf(opt[j++],"%-30s%3s","Locked for SysOps only",node.misc&NODE_LOCK ? YesStr : NoStr); @@ -469,7 +468,7 @@ void node_toggles(int nodenum) { sprintf(opt[j++],"%-30s%3s","Page disabled",node.misc&NODE_POFF ? YesStr : NoStr); sprintf(opt[j++],"%-30s%3s","Activity alert disabled",node.misc&NODE_AOFF ? YesStr : NoStr); sprintf(opt[j++],"%-30s%3s","Re-run on logoff",node.misc&NODE_RRUN ? YesStr : NoStr); - sprintf(opt[j++],"%-30s%3s","Down node after logoff",node.misc&NODE_DOWN ? YesStr : NoStr); + sprintf(opt[j++],"%-30s%3s","Down node after logoff",(node.misc&NODE_DOWN || (node.status==NODE_OFFLINE)) ? YesStr : NoStr); sprintf(opt[j++],"%-30s%3s","Reset private chat",node.misc&NODE_RPCHT ? YesStr : NoStr); opt[j][0]=0; @@ -495,7 +494,14 @@ void node_toggles(int nodenum) { break; case 5: /* Down */ - node.misc ^= NODE_DOWN; + if(node.status == NODE_INUSE) + node.misc ^= NODE_DOWN; + if(node.status != NODE_INUSE) { + if(node.status!=NODE_OFFLINE) + node.status=NODE_OFFLINE; + else + node.status=NODE_WFC; + } break; case 6: /* Reset chat */ @@ -510,9 +516,9 @@ void node_toggles(int nodenum) { uifc.msg("Option not implemented"); continue; } + lock(nodefile,(long)(nodenum-1)*sizeof(node_t),sizeof(node_t)); + putnodedat(nodenum,node); } - lock(nodefile,(long)(nodenum-1)*sizeof(node_t),sizeof(node_t)); - putnodedat(nodenum,node); } int main(int argc, char** argv) {