This patch make ZNC query buffering behave the way I like, as I use multiple clients and still want the query buffer to be filled and replayed for the newly connecting client. diff -rup znc-0.074/IRCSock.cpp znc/IRCSock.cpp --- znc-0.074/IRCSock.cpp 2009-06-29 13:26:19 +0200 +++ znc/IRCSock.cpp 2009-08-26 11:30:56 +0200 @@ -724,21 +724,14 @@ bool CIRCSock::OnGeneralCTCP(CNick& Nick bool CIRCSock::OnPrivNotice(CNick& Nick, CString& sMessage) { MODULECALL(OnPrivNotice(Nick, sMessage), m_pUser, NULL, return true); - if (!m_pUser->IsUserAttached()) { - // If the user is detached, add to the buffer - m_pUser->AddQueryBuffer(":" + Nick.GetNickMask() + " NOTICE ", " :" + m_pUser->AddTimestamp(sMessage)); - } + m_pUser->AddQueryBuffer(":" + Nick.GetNickMask() + " NOTICE ", " :" + m_pUser->AddTimestamp(sMessage)); return false; } bool CIRCSock::OnPrivMsg(CNick& Nick, CString& sMessage) { MODULECALL(OnPrivMsg(Nick, sMessage), m_pUser, NULL, return true); - - if (!m_pUser->IsUserAttached()) { - // If the user is detached, add to the buffer - m_pUser->AddQueryBuffer(":" + Nick.GetNickMask() + " PRIVMSG ", " :" + m_pUser->AddTimestamp(sMessage)); - } + m_pUser->AddQueryBuffer(":" + Nick.GetNickMask() + " PRIVMSG ", " :" + m_pUser->AddTimestamp(sMessage)); return false; } diff -rup znc-0.074/User.cpp znc/User.cpp --- znc-0.074/User.cpp 2009-07-22 18:54:52 +0200 +++ znc/User.cpp 2009-08-26 11:30:56 +0200 @@ -290,6 +290,7 @@ void CUser::UserConnected(CClient* pClie MODULECALL(OnPrivBufferPlayLine(*pClient, sBufLine), this, NULL, continue); pClient->PutClient(sBufLine); } + m_QueryBuffer.Clear(); // Tell them why they won't connect if (!GetIRCConnectEnabled())