From: Attila Molnar Date: Mon, 30 Jun 2014 12:14:46 +0000 (+0200) Subject: m_spanningtree Translate user mode changes done via FMODE by 1202-protocol servers... X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;ds=sidebyside;h=efb7084f4970b3703be1cef22c5930cc6a49454d;p=user%2Fhenk%2Fcode%2Finspircd.git m_spanningtree Translate user mode changes done via FMODE by 1202-protocol servers to MODE --- 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 }