diff options
Diffstat (limited to 'src/modules/m_spanningtree/compat.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/compat.cpp | 17 |
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; +} |
