From 68c931c913c60fa0370047fc01f3d4d51d72b1e2 Mon Sep 17 00:00:00 2001 From: imaginos Date: Sat, 4 Sep 2004 16:23:57 +0000 Subject: [PATCH] bug where m_pUserSock is invalid and then referenced if user connects during failing irc connection (ie timeout) git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@26 726aef4b-f618-498e-8847-2d620e286838 --- IRCSock.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/IRCSock.cpp b/IRCSock.cpp index e5461754..4d7a5004 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -18,6 +18,21 @@ CIRCSock::CIRCSock(CZNC* pZNC, CUser* pUser) : Csock() { } CIRCSock::~CIRCSock() { + +#ifdef _MODULES + m_pUser->GetModules().OnIRCDisconnected(); +#endif + + const vector& vChans = m_pUser->GetChans(); + for (unsigned int a = 0; a < vChans.size(); a++) { + vChans[a]->SetIsOn(false); + } + + if (m_pUserSock) { + m_pUserSock->IRCDisconnected(); + m_pUserSock = NULL; + } + for (map::iterator a = m_msChans.begin(); a != m_msChans.end(); a++) { delete a->second; } @@ -709,20 +724,6 @@ void CIRCSock::Connected() { void CIRCSock::Disconnected() { DEBUG_ONLY(cout << GetSockName() << " == Disconnected()" << endl); m_pUser->PutStatus("Disconnected from IRC. Reconnecting..."); - -#ifdef _MODULES - m_pUser->GetModules().OnIRCDisconnected(); -#endif - - const vector& vChans = m_pUser->GetChans(); - for (unsigned int a = 0; a < vChans.size(); a++) { - vChans[a]->SetIsOn(false); - } - - if (m_pUserSock) { - m_pUserSock->IRCDisconnected(); - m_pUserSock = NULL; - } } void CIRCSock::SockError(int iErrno) {