From f9afabc23ec244bc0581c889245ab8b7f6cbeb25 Mon Sep 17 00:00:00 2001 From: prozacx Date: Wed, 12 Oct 2005 06:57:32 +0000 Subject: [PATCH] Respect AwaySuffix by starting timers in Clone() git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@569 726aef4b-f618-498e-8847-2d620e286838 --- User.cpp | 31 ++++++++++++++++++++++--------- User.h | 1 + 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/User.cpp b/User.cpp index 526fc05a..59f7b628 100644 --- a/User.cpp +++ b/User.cpp @@ -95,15 +95,7 @@ void CUser::UserConnected(CUserSock* pUserSock) { } m_vUserSocks.push_back(pUserSock); - CIRCSock* pIRCSock = GetIRCSock(); - - CString sConfNick = GetNick(); - if (pIRCSock) { - if (pIRCSock->GetNick().CaseCmp(CNick::Concat(sConfNick, GetAwaySuffix(), pIRCSock->GetMaxNickLen())) == 0) { - m_pBackNickTimer = new CBackNickTimer(this); - CZNC::Get().GetManager().AddCron(m_pBackNickTimer); - } - } + StartBackNickTimer(); if (m_RawBuffer.IsEmpty()) { pUserSock->PutServ(":irc.znc.com 001 " + pUserSock->GetNick() + " :- Welcome to ZNC -"); @@ -148,6 +140,19 @@ void CUser::StartAwayNickTimer() { } } +void CUser::StartBackNickTimer() { + CIRCSock* pIRCSock = GetIRCSock(); + + if (pIRCSock) { + CString sConfNick = GetNick(); + + if (pIRCSock->GetNick().CaseCmp(CNick::Concat(sConfNick, GetAwaySuffix(), pIRCSock->GetMaxNickLen())) == 0) { + m_pBackNickTimer = new CBackNickTimer(this); + CZNC::Get().GetManager().AddCron(m_pBackNickTimer); + } + } +} + void CUser::DelAwayNickTimer() { m_pAwayNickTimer = NULL; } @@ -333,6 +338,14 @@ bool CUser::Clone(const CUser& User, CString& sErrorRet) { SetAdmin(User.IsAdmin()); // !Flags + if (!IsUserAttached()) { + if (GetAwaySuffix().empty()) { + StartBackNickTimer(); + } else { + StartAwayNickTimer(); + } + } + return true; } diff --git a/User.h b/User.h index a5b70b7e..340d6bfd 100644 --- a/User.h +++ b/User.h @@ -88,6 +88,7 @@ public: CString GetCurNick(); bool Clone(const CUser& User, CString& sErrorRet); void StartAwayNickTimer(); + void StartBackNickTimer(); void DelAwayNickTimer(); void DelBackNickTimer(); void BounceAllClients();