From d72c1dd71042d815d2f423c7147fc2bd5293208b Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Thu, 9 Oct 2003 03:17:59 +0000 Subject: [PATCH] Recycle semaphroe names now include the word "Recycle". Now only terminates services during shutdown if start button is enabled. --- src/sbbs3/ctrl/MainFormUnit.cpp | 55 +++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/src/sbbs3/ctrl/MainFormUnit.cpp b/src/sbbs3/ctrl/MainFormUnit.cpp index 15e7c6d991..adabb0ee6a 100644 --- a/src/sbbs3/ctrl/MainFormUnit.cpp +++ b/src/sbbs3/ctrl/MainFormUnit.cpp @@ -847,7 +847,8 @@ void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose) return; FtpStopExecute(Sender); } - ServicesStopExecute(Sender); + if(ServicesStop->Enabled) + ServicesStopExecute(Sender); CanClose=true; } @@ -3025,32 +3026,66 @@ void __fastcall TMainForm::UserTruncateMenuItemClick(TObject *Sender) } //--------------------------------------------------------------------------- - void __fastcall TMainForm::MailRecycleExecute(TObject *Sender) { - mail_startup.recycle_now=true; - MailRecycle->Enabled=false; + HANDLE recycle_sem; + char name[256]; + sprintf(name,"%sRecycle",NTSVC_NAME_MAIL); + if((recycle_sem=OpenSemaphore(SEMAPHORE_MODIFY_STATE,FALSE,name))!=NULL) { + ReleaseSemaphore(recycle_sem,1,NULL); + CloseHandle(recycle_sem); + } else { + mail_startup.recycle_now=true; + MailRecycle->Enabled=false; + } } //--------------------------------------------------------------------------- void __fastcall TMainForm::FtpRecycleExecute(TObject *Sender) { - ftp_startup.recycle_now=true; - FtpRecycle->Enabled=false; + HANDLE recycle_sem; + char name[256]; + sprintf(name,"%sRecycle",NTSVC_NAME_FTP); + if((recycle_sem=OpenSemaphore(SEMAPHORE_MODIFY_STATE,FALSE,name))!=NULL) { + ReleaseSemaphore(recycle_sem,1,NULL); + CloseHandle(recycle_sem); + } else { + ftp_startup.recycle_now=true; + FtpRecycle->Enabled=false; + } } //--------------------------------------------------------------------------- void __fastcall TMainForm::ServicesRecycleExecute(TObject *Sender) { - services_startup.recycle_now=true; - ServicesRecycle->Enabled=false; + HANDLE recycle_sem; + char name[256]; + sprintf(name,"%sRecycle",NTSVC_NAME_SERVICES); + if((recycle_sem=OpenSemaphore(SEMAPHORE_MODIFY_STATE,FALSE,name))!=NULL) { + ReleaseSemaphore(recycle_sem,1,NULL); + CloseHandle(recycle_sem); + } else { + services_startup.recycle_now=true; + ServicesRecycle->Enabled=false; + } } //--------------------------------------------------------------------------- void __fastcall TMainForm::TelnetRecycleExecute(TObject *Sender) { - bbs_startup.recycle_now=true; - TelnetRecycle->Enabled=false; + HANDLE recycle_sem; + char name[256]; + sprintf(name,"%sRecycle",NTSVC_NAME_BBS); + if((recycle_sem=OpenSemaphore(SEMAPHORE_MODIFY_STATE,FALSE,name))!=NULL) { + ReleaseSemaphore(recycle_sem,1,NULL); + CloseHandle(recycle_sem); + } else { + char error[256]; + sprintf(error,"ERROR %d opening semaphore: %s",GetLastError(),NTSVC_NAME_BBS); + bbs_lputs(NULL,error); + bbs_startup.recycle_now=true; + TelnetRecycle->Enabled=false; + } } //--------------------------------------------------------------------------- -- GitLab