CListener: Deny changes to settings after setup

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1972 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
psychon
2010-05-09 18:27:11 +00:00
parent 53aeceb6bc
commit f6716d08c7
2 changed files with 44 additions and 11 deletions

View File

@@ -8,6 +8,44 @@
#include "Listener.h"
CListener::~CListener() {
if (m_pListener)
CZNC::Get().GetManager().DelSockByAddr(m_pListener);
}
// Settings may not be changed when we are already listening
#define CHECK() if (m_pListener) return;
void CListener::SetSSL(bool b) {
CHECK();
m_bSSL = b;
}
void CListener::SetAddrType(EAddrType eAddr) {
CHECK();
m_eAddr = eAddr;
}
void CListener::SetPort(unsigned short u) {
CHECK();
m_uPort = u;
}
void CListener::SetBindHost(const CString& s) {
CHECK();
m_sBindHost = s;
}
void CListener::SetRealListener(CRealListener* p) {
CHECK();
m_pListener = p;
}
void CListener::SetAcceptType(AcceptType a) {
CHECK();
m_eAcceptType = a;
}
bool CListener::Listen() {
if (!m_uPort || m_pListener) {
return false;
@@ -27,11 +65,6 @@ bool CListener::Listen() {
m_pListener, 0, m_eAddr);
}
CListener::~CListener() {
if (m_pListener)
CZNC::Get().GetManager().DelSockByAddr(m_pListener);
}
CRealListener::~CRealListener() {
m_pParent->SetRealListener(NULL);
}