From fb103fa96ebfd22f49eeab2de7796114686f11c5 Mon Sep 17 00:00:00 2001 From: prozacx Date: Fri, 14 Oct 2005 17:46:34 +0000 Subject: [PATCH] Fixed problem with CUserSock losing m_pIRCSock when znc jumps IRC servers git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@573 726aef4b-f618-498e-8847-2d620e286838 --- User.cpp | 8 +++++++- User.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/User.cpp b/User.cpp index 59f7b628..ff38b7c2 100644 --- a/User.cpp +++ b/User.cpp @@ -21,6 +21,7 @@ CUser::CUser(const CString& sUserName) { #endif m_RawBuffer.SetLineCount(100); // This should be more than enough raws, especially since we are buffering the MOTD separately m_MotdBuffer.SetLineCount(200); // This should be more than enough motd lines + m_bIRCConnected = false; m_bMultiClients = true; m_bBounceDCCs = true; m_bPassHashed = false; @@ -73,9 +74,14 @@ bool CUser::OnBoot() { } void CUser::IRCConnected(CIRCSock* pIRCSock) { + for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { + m_vUserSocks[a]->IRCConnected(pIRCSock); + } } void CUser::IRCDisconnected() { + m_bIRCConnected = false; + for (unsigned int a = 0; a < m_vUserSocks.size(); a++) { m_vUserSocks[a]->IRCDisconnected(); } @@ -866,7 +872,7 @@ void CUser::SetKeepNick(bool b) { m_bKeepNick = b; } void CUser::SetDenyLoadMod(bool b) { m_bDenyLoadMod = b; } void CUser::SetAdmin(bool b) { m_bAdmin = b; } void CUser::SetDefaultChanModes(const CString& s) { m_sDefaultChanModes = s; } -void CUser::SetIRCServer(const CString& s) { m_sIRCServer = s; } +void CUser::SetIRCServer(const CString& s) { m_sIRCServer = s; m_bIRCConnected = true; } void CUser::SetQuitMsg(const CString& s) { m_sQuitMsg = s; } void CUser::SetBufferCount(unsigned int u) { m_uBufferCount = u; } void CUser::SetKeepBuffer(bool b) { m_bKeepBuffer = b; } diff --git a/User.h b/User.h index 340d6bfd..a3f96fe8 100644 --- a/User.h +++ b/User.h @@ -79,6 +79,7 @@ public: void UserDisconnected(CUserSock* pUserSock); CString GetLocalIP(); + bool IsIRCConnected() { return (GetIRCSock() != NULL); } void IRCConnected(CIRCSock* pIRCSock); void IRCDisconnected(); @@ -185,7 +186,7 @@ protected: CBuffer m_RawBuffer; CBuffer m_MotdBuffer; CBuffer m_QueryBuffer; - + bool m_bIRCConnected; bool m_bMultiClients; bool m_bBounceDCCs; bool m_bPassHashed;