diff options
| author | Adam <Adam@anope.org> | 2017-03-19 18:36:03 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2017-03-19 18:36:03 -0400 |
| commit | 2a886acbedb6b6386dbff3e591b0d4035d516b2a (patch) | |
| tree | 765218b2fc476e9b1517d7f1e4aa78f57de87752 /modules/chanserv/main | |
| parent | f237405a52f6b8efb606c5181ffe3bd75a6a6a8a (diff) | |
Get rid of relying on if(this) in WhoSends()
Diffstat (limited to 'modules/chanserv/main')
| -rw-r--r-- | modules/chanserv/main/channel.cpp | 9 | ||||
| -rw-r--r-- | modules/chanserv/main/channel.h | 1 | ||||
| -rw-r--r-- | modules/chanserv/main/chanserv.cpp | 19 |
3 files changed, 22 insertions, 7 deletions
diff --git a/modules/chanserv/main/channel.cpp b/modules/chanserv/main/channel.cpp index d10abbc0d..25430656e 100644 --- a/modules/chanserv/main/channel.cpp +++ b/modules/chanserv/main/channel.cpp @@ -347,6 +347,15 @@ void ChannelImpl::SetPrivate(bool _private) Set(&ChannelType::_private, _private); } +ServiceBot *ChannelImpl::WhoSends() +{ + BotInfo *bi = GetBI(); + if (bi != nullptr) + return bi->bot; + + return Config->GetClient("ChanServ"); +} + ChanServ::ChanAccess *ChannelImpl::GetAccess(unsigned index) { std::vector<ChanServ::ChanAccess *> a = GetRefs<ChanServ::ChanAccess *>(); diff --git a/modules/chanserv/main/channel.h b/modules/chanserv/main/channel.h index bb79df3c5..1cc6dc408 100644 --- a/modules/chanserv/main/channel.h +++ b/modules/chanserv/main/channel.h @@ -141,6 +141,7 @@ class ChannelImpl : public ChanServ::Channel void SetPrivate(bool) override; bool IsFounder(const User *user) override; + ServiceBot *WhoSends() override; ChanServ::ChanAccess *GetAccess(unsigned index) override; ChanServ::AccessGroup AccessFor(const User *u, bool = true) override; ChanServ::AccessGroup AccessFor(NickServ::Account *nc, bool = true) override; diff --git a/modules/chanserv/main/chanserv.cpp b/modules/chanserv/main/chanserv.cpp index dd6bdb472..be29c0ab8 100644 --- a/modules/chanserv/main/chanserv.cpp +++ b/modules/chanserv/main/chanserv.cpp @@ -380,17 +380,17 @@ class ChanServCore : public Module return; if (c->ci) - c->SetMode(c->ci->WhoSends(), "REGISTERED", "", false); + c->SetMode(nullptr, "REGISTERED", "", false); else - c->RemoveMode(c->ci->WhoSends(), "REGISTERED", "", false); + c->RemoveMode(nullptr, "REGISTERED", "", false); const Anope::string &require = Config->GetModule(this)->Get<Anope::string>("require"); if (!require.empty()) { if (c->ci) - c->SetModes(c->ci->WhoSends(), false, "+%s", require.c_str()); + c->SetModes(nullptr, false, "+%s", require.c_str()); else - c->SetModes(c->ci->WhoSends(), false, "-%s", require.c_str()); + c->SetModes(nullptr, false, "-%s", require.c_str()); } } @@ -485,8 +485,13 @@ class ChanServCore : public Module else { if (!ci->GetBot()) - ci->WhoSends()->Assign(NULL, ci); - if (ci->c->FindUser(ci->GetBot()) == NULL) + { + ServiceBot *bi = ci->WhoSends(); + if (bi != nullptr) + bi->Assign(nullptr, ci); + } + + if (ci->GetBot() != nullptr && ci->c->FindUser(ci->GetBot()) == nullptr) { Anope::string botmodes = Config->GetModule("botserv/main")->Get<Anope::string>("botmodes", Config->GetModule("chanserv/main")->Get<Anope::string>("botmodes")); @@ -535,7 +540,7 @@ class ChanServCore : public Module if (cu && cm && !cu->status.HasMode(cm->mchar)) { /* Our -o and their mode change crossing, bounce their mode */ - c->RemoveMode(c->ci->WhoSends(), mode, param); + c->RemoveMode(nullptr, mode, param); /* We don't set mlocks until after the join has finished processing, it will stack with this change, * so there isn't much for the user to remove except -nt etc which is likely locked anyway. */ |
