summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-09-17 14:32:46 -0400
committerAdam <Adam@anope.org>2010-09-17 14:32:46 -0400
commit74566d869aefab16ede2fa946a0ea7b2cfed51ef (patch)
treee5de1428e8e6071c55b9de5662ad4c94407e8b6b
parent61e75646339753609d25aad0f4f8f60db1c966b5 (diff)
Fixed bug #1190 and prevent m_dnsbl from akilling a user multiple times if they are in multiple blacklists
-rw-r--r--modules/extra/m_dnsbl.cpp4
-rw-r--r--src/regchannel.cpp5
2 files changed, 6 insertions, 3 deletions
diff --git a/modules/extra/m_dnsbl.cpp b/modules/extra/m_dnsbl.cpp
index ce82b68a4..6360c3753 100644
--- a/modules/extra/m_dnsbl.cpp
+++ b/modules/extra/m_dnsbl.cpp
@@ -27,9 +27,11 @@ class DNSBLResolver : public DNSRequest
void OnLookupComplete(const DNSRecord *)
{
- if (!user)
+ if (!user || user->GetExt("m_dnsbl_akilled"))
return;
+ user->Extend("m_dnsbl_akilled");
+
Anope::string reason = this->blacklist.reason;
reason = reason.replace_all_ci("%i", user->ip.addr());
reason = reason.replace_all_ci("%h", user->host);
diff --git a/src/regchannel.cpp b/src/regchannel.cpp
index fb8036677..ad9a0eac7 100644
--- a/src/regchannel.cpp
+++ b/src/regchannel.cpp
@@ -394,9 +394,10 @@ void ChannelInfo::LoadMLock()
if (this->HasFlag(CI_PERSIST) && !this->c)
{
this->c = new Channel(this->name, this->time_registered);
- if (!this->bi)
+ if (!this->bi && ModeManager::FindChannelModeByName(CMODE_PERM) == NULL)
ChanServ->Assign(NULL, this);
- this->bi->Join(c);
+ else if (this->bi)
+ this->bi->Join(c);
check_modes(this->c);
this->CheckTopic();
}