Better handling of deletion of servers

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@656 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
prozacx
2006-02-14 07:07:30 +00:00
parent 51021e706b
commit e03604de6d
2 changed files with 29 additions and 5 deletions
+25 -2
View File
@@ -601,9 +601,32 @@ bool CUser::DelServer(const CString& sName) {
return false;
}
for (vector<CServer*>::iterator it = m_vServers.begin(); it != m_vServers.end(); it++) {
if ((*it)->GetName().CaseCmp(sName) == 0) {
unsigned int a = 0;
for (vector<CServer*>::iterator it = m_vServers.begin(); it != m_vServers.end(); it++, a++) {
CServer* pServer = *it;
if (pServer->GetName().CaseCmp(sName) == 0) {
CServer* pCurServer = GetCurrentServer();
m_vServers.erase(it);
if (pServer == pCurServer) {
CIRCSock* pIRCSock = GetIRCSock();
if (m_uServerIdx) {
m_uServerIdx--;
}
if (pIRCSock) {
pIRCSock->Close();
PutUser("Your current server was removed, jumping...");
}
} else if (m_uServerIdx >= m_vServers.size()) {
m_uServerIdx = 0;
}
delete pServer;
return true;
}
}