diff options
Diffstat (limited to 'src/modules/m_spanningtree/capab.cpp')
-rw-r--r-- | src/modules/m_spanningtree/capab.cpp | 12 |
1 files changed, 11 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()) |