diff --git a/modules/partyline.cpp b/modules/partyline.cpp index 9be7ddd7..df1cfe90 100644 --- a/modules/partyline.cpp +++ b/modules/partyline.cpp @@ -70,6 +70,19 @@ public: } virtual ~CPartylineMod() { + // Kick all clients who are in partyline channels + for (set::iterator it = m_ssChannels.begin(); it != m_ssChannels.end(); ++it) { + set ssNicks = (*it)->GetNicks(); + for (set::const_iterator it2 = ssNicks.begin(); it2 != ssNicks.end(); ++it2) { + CUser* pUser = CZNC::Get().FindUser(*it2); + vector vClients = pUser->GetAllClients(); + for (vector::const_iterator it3 = vClients.begin(); it3 != vClients.end(); ++it3) { + CClient* pClient = *it3; + pClient->PutClient( ":*" + GetModName() + "!znc@znc.in KICK " + (*it)->GetName() + " " + pClient->GetNick() + " :" + GetModName() + " unloaded"); + } + } + } + while (m_ssChannels.size()) { delete *m_ssChannels.begin(); m_ssChannels.erase(m_ssChannels.begin());