aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/compat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree/compat.cpp')
-rw-r--r--src/modules/m_spanningtree/compat.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp
index 5d61272ea..d193d5e5a 100644
--- a/src/modules/m_spanningtree/compat.cpp
+++ b/src/modules/m_spanningtree/compat.cpp
@@ -109,3 +109,20 @@ void TreeSocket::WriteLine(const std::string& original_line)
WriteLineInternal(line);
}
+
+bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, CommandBase::Params& params)
+{
+ if (irc::equals(cmd, "SVSJOIN") || irc::equals(cmd, "SVSNICK") || irc::equals(cmd, "SVSPART"))
+ {
+ if (params.empty())
+ return false; // Malformed.
+
+ auto* target = ServerInstance->Users.FindUUID(params[0]);
+ if (!target)
+ return false; // User gone.
+
+ params.insert(params.begin(), { cmd, target->uuid });
+ cmd = "ENCAP";
+ }
+ return true;
+}