diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:47:22 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:47:22 +0000 |
commit | 8085aa879bd989b526791797910295944a364084 (patch) | |
tree | 6700102a90f2194a9b31407d35440e4f9881c7c6 /src/modules | |
parent | e07a1a5ffab0a54ff04a7ff93b8c25c69992bf81 (diff) |
Make VF_OPTCOMMON module mismatches a fatal link error by default
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11620 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_spanningtree/capab.cpp | 12 | ||||
-rw-r--r-- | src/modules/m_spanningtree/utils.cpp | 1 | ||||
-rw-r--r-- | src/modules/m_spanningtree/utils.h | 4 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree/capab.cpp b/src/modules/m_spanningtree/capab.cpp index cd8564892..ac97674f5 100644 --- a/src/modules/m_spanningtree/capab.cpp +++ b/src/modules/m_spanningtree/capab.cpp @@ -192,13 +192,23 @@ bool TreeSocket::Capab(const parameterlist ¶ms) { reason = "Optional Module list in CAPAB is not alphabetically ordered, cannot compare lists."; } - else + else if (Utils->AllowOptCommon) { ServerInstance->SNO->WriteToSnoMask('l', "Optional module lists do not match, some commands may not work globally.%s%s%s%s", diffIneed.length() ? " Not loaded here:" : "", diffIneed.c_str(), diffUneed.length() ? " Not loaded there:" : "", diffUneed.c_str()); } + else + { + reason = "Optional modules incorrectly matched on these servers, and options::allowmismatch not set."; + if (diffIneed.length()) + reason += " Not loaded here:" + diffIneed; + if (diffUneed.length()) + reason += " Not loaded there:" + diffUneed; + this->SendError("CAPAB negotiation failed: "+reason); + return false; + } } if (this->CapKeys.find("PROTOCOL") == this->CapKeys.end()) diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index 7c1771557..13a4cc760 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -510,6 +510,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind) FlatLinks = Conf->ReadFlag("security","flatlinks",0); HideULines = Conf->ReadFlag("security","hideulines",0); AnnounceTSChange = Conf->ReadFlag("options","announcets",0); + AllowOptCommon = Conf->ReadFlag("options", "allowmismatch", 0); ChallengeResponse = !Conf->ReadFlag("security", "disablehmac", 0); quiet_bursts = Conf->ReadFlag("performance", "quietbursts", 0); PingWarnTime = Conf->ReadInteger("options", "pingwarning", 0, true); diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index 9936ebacf..6ac657851 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -83,6 +83,10 @@ class SpanningTreeUtilities : public classbase */ bool AnnounceTSChange; + /** Allow modules marked as VF_OPTCOMMON to be mismatched when linking + */ + bool AllowOptCommon; + /** Make snomasks +CQ quiet during bursts and splits */ bool quiet_bursts; |