From 4ec10d798b63c971352f20f7be5e734956617094 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 6 Oct 2012 19:54:29 -0400 Subject: Fixups and cleanup for the last few commits --- modules/protocol/inspircd-ts6.h | 4 ++-- modules/protocol/inspircd12.cpp | 2 +- modules/protocol/inspircd20.cpp | 18 +++++++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) (limited to 'modules') diff --git a/modules/protocol/inspircd-ts6.h b/modules/protocol/inspircd-ts6.h index 870546438..207fde99b 100644 --- a/modules/protocol/inspircd-ts6.h +++ b/modules/protocol/inspircd-ts6.h @@ -96,7 +96,7 @@ class InspIRCdTS6Proto : public IRCDProto { if (has_svstopic_topiclock) { - UplinkSocket::Message(Me) << "SVSTOPIC " << c->name << " " << c->topic_ts << " " << c->topic_setter << " :" << c->topic; + UplinkSocket::Message(c->ci->WhoSends()) << "SVSTOPIC " << c->name << " " << c->topic_ts << " " << c->topic_setter << " :" << c->topic; } else { @@ -521,7 +521,7 @@ struct IRCDMessageFTopic : IRCDMessage bool Run(MessageSource &source, const std::vector ¶ms) anope_override { - /* :source FTOPIC channel ts setby :topic */ + /* :source FTOPIC channel topicts setby :topic */ Channel *c = findchan(params[0]); if (c) diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 1a1ebb65e..97d2b6259 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -19,7 +19,7 @@ static bool has_chghostmod = false; static bool has_chgidentmod = false; static bool has_rlinemod = false; static bool has_svstopic_topiclock = false; -static unsigned int spanningtree_proto_ver = 1201; +//static unsigned int spanningtree_proto_ver = 1201; #include "inspircd-ts6.h" static bool has_servicesmod = false; diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 04a23c104..abe9779b6 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -538,7 +538,7 @@ class ProtoInspIRCd : public Module Capab.insert("NOQUIT"); - Implementation i[] = { I_OnUserNickChange, I_OnServerSync, I_OnChannelCreate, I_OnChanRegistered, I_OnDelChan, I_OnMLock, I_OnUnMLock }; + Implementation i[] = { I_OnUserNickChange, I_OnServerSync, I_OnChannelCreate, I_OnChanRegistered, I_OnDelChan, I_OnMLock, I_OnUnMLock, I_OnSetChannelOption }; ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); if (Config->Numeric.empty()) @@ -576,13 +576,13 @@ class ProtoInspIRCd : public Module void OnChanRegistered(ChannelInfo *ci) anope_override { - if (Config->UseServerSideMLock) + if (Config->UseServerSideMLock && ci->c) { Anope::string modes = ci->GetMLockAsString(false).replace_all_cs("+", "").replace_all_cs("-", ""); SendChannelMetadata(ci->c, "mlock", modes); } - if (Config->UseServerSideTopicLock && has_svstopic_topiclock) + if (Config->UseServerSideTopicLock && has_svstopic_topiclock && ci->c) { Anope::string on = ci->HasFlag(CI_TOPICLOCK) ? "1" : ""; SendChannelMetadata(ci->c, "topiclock", on); @@ -591,10 +591,10 @@ class ProtoInspIRCd : public Module void OnDelChan(ChannelInfo *ci) anope_override { - if (Config->UseServerSideMLock) + if (Config->UseServerSideMLock && ci->c) SendChannelMetadata(ci->c, "mlock", ""); - if (Config->UseServerSideTopicLock && has_svstopic_topiclock) + if (Config->UseServerSideTopicLock && has_svstopic_topiclock && ci->c) SendChannelMetadata(ci->c, "topiclock", ""); } @@ -621,6 +621,14 @@ class ProtoInspIRCd : public Module return EVENT_CONTINUE; } + + EventReturn OnSetChannelOption(CommandSource &source, Command *cmd, ChannelInfo *ci, const Anope::string &setting) anope_override + { + if (cmd->name == "chanserv/set/topiclock" && ci->c) + SendChannelMetadata(ci->c, "topiclock", setting.equals_ci("ON") ? "1" : ""); + + return EVENT_CONTINUE; + } }; MODULE_INIT(ProtoInspIRCd) -- cgit