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 | |
| parent | f237405a52f6b8efb606c5181ffe3bd75a6a6a8a (diff) | |
Get rid of relying on if(this) in WhoSends()
Diffstat (limited to 'modules')
| -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 | ||||
| -rw-r--r-- | modules/chanserv/topic.cpp | 4 | ||||
| -rw-r--r-- | modules/nickserv/recover.cpp | 2 | ||||
| -rw-r--r-- | modules/operserv/mode.cpp | 4 | ||||
| -rw-r--r-- | modules/protocol/unreal.cpp | 12 |
7 files changed, 37 insertions, 14 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. */ diff --git a/modules/chanserv/topic.cpp b/modules/chanserv/topic.cpp index d3546562e..005bcaf22 100644 --- a/modules/chanserv/topic.cpp +++ b/modules/chanserv/topic.cpp @@ -261,7 +261,9 @@ class CSTopic : public Module /* Update channel topic */ if ((c->ci->IsTopicLock() || c->ci->IsKeepTopic()) && c->ci->GetLastTopic() != c->topic) { - c->ChangeTopic(!c->ci->GetLastTopicSetter().empty() ? c->ci->GetLastTopicSetter() : c->ci->WhoSends()->nick, c->ci->GetLastTopic(), c->ci->GetLastTopicTime() ? c->ci->GetLastTopicTime() : Anope::CurTime); + ServiceBot *sender = c->ci->WhoSends(); + c->ChangeTopic(!c->ci->GetLastTopicSetter().empty() ? c->ci->GetLastTopicSetter() : (sender ? sender->nick : Me->GetName()), + c->ci->GetLastTopic(), c->ci->GetLastTopicTime() ? c->ci->GetLastTopicTime() : Anope::CurTime); } } } diff --git a/modules/nickserv/recover.cpp b/modules/nickserv/recover.cpp index 5c4f3ac1d..386542fc9 100644 --- a/modules/nickserv/recover.cpp +++ b/modules/nickserv/recover.cpp @@ -295,7 +295,7 @@ class NSRecover : public Module if (it != ei->end()) { for (size_t i = 0; i < it->second.Modes().length(); ++i) - c->SetMode(c->ci->WhoSends(), ModeManager::FindChannelModeByChar(it->second.Modes()[i]), u->GetUID()); + c->SetMode(nullptr, ModeManager::FindChannelModeByChar(it->second.Modes()[i]), u->GetUID()); ei->erase(it); if (ei->empty()) diff --git a/modules/operserv/mode.cpp b/modules/operserv/mode.cpp index 84b4ba6fb..2dd9b899e 100644 --- a/modules/operserv/mode.cpp +++ b/modules/operserv/mode.cpp @@ -53,7 +53,7 @@ class CommandOSMode : public Command const Channel::ModeList chmodes = c->GetModes(); for (Channel::ModeList::const_iterator it = chmodes.begin(), it_end = chmodes.end(); it != it_end && c; ++it) - c->RemoveMode(c->ci->WhoSends(), it->first, it->second, false); + c->RemoveMode(nullptr, it->first, it->second, false); if (!c) { @@ -71,7 +71,7 @@ class CommandOSMode : public Command continue; for (size_t i = uc->status.Modes().length(); i > 0; --i) - c->RemoveMode(c->ci->WhoSends(), ModeManager::FindChannelModeByChar(uc->status.Modes()[i - 1]), uc->user->GetUID(), false); + c->RemoveMode(nullptr, ModeManager::FindChannelModeByChar(uc->status.Modes()[i - 1]), uc->user->GetUID(), false); } source.Reply(_("All modes cleared on \002{0}\002."), c->name); diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index fd6e31875..0bca595df 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -104,10 +104,16 @@ void unreal::senders::MessageChannel::Send(Channel* c) /* Unreal does not support updating a channels TS without actually joining a user, * so we will join and part us now */ - ServiceBot *bi = c->ci->WhoSends(); + ServiceBot *bi; + if (c->ci) + bi = c->ci->WhoSends(); + else + bi = Config->GetClient("ChanServ"); + if (!bi) - ; - else if (c->FindUser(bi) == NULL) + return; + + if (c->FindUser(bi) == NULL) { bi->Join(c); bi->Part(c); |
