From efb7084f4970b3703be1cef22c5930cc6a49454d Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 30 Jun 2014 14:14:46 +0200 Subject: [PATCH] m_spanningtree Translate user mode changes done via FMODE by 1202-protocol servers to MODE --- src/modules/m_spanningtree/compat.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp index 724a5ced9..0f55793f1 100644 --- a/src/modules/m_spanningtree/compat.cpp +++ b/src/modules/m_spanningtree/compat.cpp @@ -415,6 +415,23 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, std: params.back().append(who->uuid); who = TreeServer::Get(who)->ServerUser; } + else if ((cmd == "FMODE") && (params.size() >= 2)) + { + // Translate user mode changes with timestamp to MODE + if (params[0][0] != '#') + { + User* user = ServerInstance->FindUUID(params[0]); + if (!user) + return false; + + // Emulate the old nonsensical behavior + if (user->age < ServerCommand::ExtractTS(params[1])) + return false; + + cmd = "MODE"; + params.erase(params.begin()+1); + } + } return true; // Passthru } -- 2.39.2