aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/server.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2024-05-01 13:06:46 +0100
committerGravatar Sadie Powell2024-05-01 14:02:33 +0100
commiteade37bd93b13a8652b08a7cc97dc0a443aae99c (patch)
tree93ba2e721837d78771a5667666cf35e104443c9c /src/modules/m_spanningtree/server.cpp
parentMake --(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.cpp12
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
));