diff options
| author | 2024-05-01 13:06:46 +0100 | |
|---|---|---|
| committer | 2024-05-01 14:02:33 +0100 | |
| commit | eade37bd93b13a8652b08a7cc97dc0a443aae99c (patch) | |
| tree | 93ba2e721837d78771a5667666cf35e104443c9c /src/modules/m_spanningtree/server.cpp | |
| parent | Make --(protocol)debug imply --nofork. (diff) | |
Splat the unused hops field in the 1206 SERVER message.
Diffstat (limited to 'src/modules/m_spanningtree/server.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/server.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/modules/m_spanningtree/server.cpp b/src/modules/m_spanningtree/server.cpp index d68b39b17..962945cd3 100644 --- a/src/modules/m_spanningtree/server.cpp +++ b/src/modules/m_spanningtree/server.cpp @@ -98,7 +98,8 @@ void CommandServer::HandleExtra(TreeServer* newserver, Params& params) std::shared_ptr<Link> TreeSocket::AuthRemote(const CommandBase::Params& params) { - if (params.size() < 5) + size_t offset = proto_version == PROTO_INSPIRCD_3; + if (params.size() < 4+offset) { SendError("Protocol error - Not enough parameters for SERVER command"); return nullptr; @@ -106,7 +107,7 @@ std::shared_ptr<Link> TreeSocket::AuthRemote(const CommandBase::Params& params) const std::string& sname = params[0]; const std::string& password = params[1]; - const std::string& sid = params[3]; + const std::string& sid = params[2+offset]; const std::string& description = params.back(); this->SendCapabilities(2); @@ -170,7 +171,7 @@ bool TreeSocket::Outbound_Reply_Server(CommandBase::Params& params) * While we're at it, create a treeserver object so we know about them. * -- w */ - FinishAuth(params[0], params[3], params.back(), x->Hidden); + FinishAuth(params[0], params[proto_version == PROTO_INSPIRCD_3 ? 3 : 2], params.back(), x->Hidden); return true; } @@ -216,15 +217,16 @@ bool TreeSocket::Inbound_Server(CommandBase::Params& params) { // Save these for later, so when they accept our credentials (indicated by BURST) we remember them this->capab->hidden = x->Hidden; - this->capab->sid = params[3]; + this->capab->sid = params[proto_version == PROTO_INSPIRCD_3 ? 3 : 2]; this->capab->description = params.back(); this->capab->name = params[0]; // Send our details: Our server name and description and hopcount of 0, // along with the sendpass from this block. - this->WriteLine(INSP_FORMAT("SERVER {} {} 0 {} :{}", + this->WriteLine(INSP_FORMAT("SERVER {} {} {}{} :{}", ServerInstance->Config->ServerName, TreeSocket::MakePass(x->SendPass, this->GetTheirChallenge()), + proto_version == PROTO_INSPIRCD_3 ? "0 " : "", ServerInstance->Config->ServerId, ServerInstance->Config->ServerDesc )); |
