mirror of
https://github.com/znc/znc.git
synced 2026-05-05 13:02:31 +02:00
Only show QUIT and NICK event if at least one chan with the nick in question is not detached
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@45 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
20
IRCSock.cpp
20
IRCSock.cpp
@@ -289,13 +289,17 @@ void CIRCSock::ReadLine(const string& sData) {
|
||||
|
||||
if (strcasecmp(sCmd.c_str(), "NICK") == 0) {
|
||||
string sNewNick = sRest;
|
||||
bool bIsVisible = false;
|
||||
|
||||
if (CUtils::Left(sNewNick, 1) == ":") {
|
||||
CUtils::LeftChomp(sNewNick);
|
||||
}
|
||||
|
||||
const vector<CChan*>& vChans = m_pUser->GetChans();
|
||||
for (unsigned int a = 0; a < vChans.size(); a++) {
|
||||
vChans[a]->ChangeNick(sNick, sNewNick);
|
||||
if ((vChans[a]->ChangeNick(sNick, sNewNick)) && (!vChans[a]->IsDetached())) {
|
||||
bIsVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (strcasecmp(sNick.c_str(), GetNick().c_str()) == 0) {
|
||||
@@ -310,8 +314,14 @@ void CIRCSock::ReadLine(const string& sData) {
|
||||
#ifdef _MODULES
|
||||
m_pUser->GetModules().OnNick(sNickMask, sNewNick);
|
||||
#endif
|
||||
|
||||
if (!bIsVisible) {
|
||||
return;
|
||||
}
|
||||
} else if (strcasecmp(sCmd.c_str(), "QUIT") == 0) {
|
||||
string sMessage = sRest;
|
||||
bool bIsVisible = false;
|
||||
|
||||
if (CUtils::Left(sMessage, 1) == ":") {
|
||||
CUtils::LeftChomp(sMessage);
|
||||
}
|
||||
@@ -321,7 +331,9 @@ void CIRCSock::ReadLine(const string& sData) {
|
||||
|
||||
const vector<CChan*>& vChans = m_pUser->GetChans();
|
||||
for (unsigned int a = 0; a < vChans.size(); a++) {
|
||||
vChans[a]->RemNick(sNick);
|
||||
if ((vChans[a]->RemNick(sNick)) && (!vChans[a]->IsDetached())) {
|
||||
bIsVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (strcasecmp(Nick.GetNick().c_str(), m_pUser->GetNick().c_str()) == 0) {
|
||||
@@ -331,6 +343,10 @@ void CIRCSock::ReadLine(const string& sData) {
|
||||
#ifdef _MODULES
|
||||
m_pUser->GetModules().OnQuit(Nick, sMessage);
|
||||
#endif
|
||||
|
||||
if (!bIsVisible) {
|
||||
return;
|
||||
}
|
||||
} else if (strcasecmp(sCmd.c_str(), "JOIN") == 0) {
|
||||
string sChan = CUtils::Token(sRest, 0);
|
||||
if (CUtils::Left(sChan, 1) == ":") {
|
||||
|
||||
Reference in New Issue
Block a user