From 0ab057beca7de5d4ce331c34ca1e3bda30d9433a Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 30 Jun 2014 14:07:51 +0200 Subject: [PATCH] m_spanningtree Accept legacy JOINs from 1202-protocol servers 2.0 accepted JOIN and some pseudoservers might use it --- src/modules/m_spanningtree/compat.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp index b9c7e6940..724a5ced9 100644 --- a/src/modules/m_spanningtree/compat.cpp +++ b/src/modules/m_spanningtree/compat.cpp @@ -401,6 +401,20 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, std: cmd = "SINFO"; params.insert(params.begin(), "version"); } + else if (cmd == "JOIN") + { + // 2.0 allows and forwards legacy JOINs but we don't, so translate them to FJOINs before processing + if ((params.size() != 1) || (IS_SERVER(who))) + return false; // Huh? + + cmd = "FJOIN"; + Channel* chan = ServerInstance->FindChan(params[0]); + params.push_back(ConvToStr(chan ? chan->age : ServerInstance->Time())); + params.push_back("+"); + params.push_back(","); + params.back().append(who->uuid); + who = TreeServer::Get(who)->ServerUser; + } return true; // Passthru } -- 2.39.5