aboutsummaryrefslogtreecommitdiffstats
path: root/modules/spanningtree/compat.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2026-06-24 13:46:06 +0100
committerGravatar Sadie Powell2026-06-24 21:22:25 +0100
commit78320e81ab4ac39b04ebd8fb759a62afd7f28a64 (patch)
tree6ff2af053945a3f77672ea3ab82c824ab627c085 /modules/spanningtree/compat.cpp
parentParse module link data when we receive it. (diff)
Be more precise about protocol versions in spanningtree.
Diffstat (limited to 'modules/spanningtree/compat.cpp')
-rw-r--r--modules/spanningtree/compat.cpp51
1 files changed, 27 insertions, 24 deletions
diff --git a/modules/spanningtree/compat.cpp b/modules/spanningtree/compat.cpp
index 61359fde4..4285154d9 100644
--- a/modules/spanningtree/compat.cpp
+++ b/modules/spanningtree/compat.cpp
@@ -111,35 +111,38 @@ bool TreeSocket::PreProcessNewProtocolMessage(User*& who, std::string& cmd, Comm
bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, CommandBase::Params& params)
{
- if (insp::casemapped_equals(cmd, "CHGHOST") || insp::casemapped_equals(cmd, "CHGIDENT") || insp::casemapped_equals(cmd, "CHGNAME"))
+ if (proto_version == PROTO_INSPIRCD_4)
{
- if (params.size() < 2)
- return false; // Malformed.
+ if (insp::casemapped_equals(cmd, "CHGHOST") || insp::casemapped_equals(cmd, "CHGIDENT") || insp::casemapped_equals(cmd, "CHGNAME"))
+ {
+ if (params.size() < 2)
+ return false; // Malformed.
- // CHG* and SET* were merged in v5.
- cmd.replace(0, 3, "SET");
- }
- else if (insp::casemapped_equals(cmd, "ENCAP"))
- {
- if (params.size() < 2)
- return false; // Malformed.
+ // CHG* and SET* were merged in v5.
+ cmd.replace(0, 3, "SET");
+ }
+ else if (insp::casemapped_equals(cmd, "ENCAP"))
+ {
+ if (params.size() < 2)
+ return false; // Malformed.
- // :<uuid> ENCAP <target> <command> [<params>...];
- CommandBase::Params newparams(params.begin() + 2, params.end());
- if (!PreProcessOldProtocolMessage(who, params[1], newparams))
- return false; // Malformed.
+ // :<uuid> ENCAP <target> <command> [<params>...];
+ CommandBase::Params newparams(params.begin() + 2, params.end());
+ if (!PreProcessOldProtocolMessage(who, params[1], newparams))
+ return false; // Malformed.
- params.erase(params.begin() + 2, params.end());
- params.insert(params.end(), newparams.begin(), newparams.end());
- }
- else if (insp::casemapped_equals(cmd, "IJOIN"))
- {
- if (params.size() < 3)
- return false; // Malformed.
+ params.erase(params.begin() + 2, params.end());
+ params.insert(params.end(), newparams.begin(), newparams.end());
+ }
+ else if (insp::casemapped_equals(cmd, "IJOIN"))
+ {
+ if (params.size() < 3)
+ return false; // Malformed.
- // :<uuid> IJOIN <chan> <membid> <joints> [<chants> <modes>]
- // ^^^^^^^^ New in 1207
- params.insert(params.begin() + 2, "0");
+ // :<uuid> IJOIN <chan> <membid> <joints> [<chants> <modes>]
+ // ^^^^^^^^ New in 1207
+ params.insert(params.begin() + 2, "0");
+ }
}
return true;
}