X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fnum.cpp;h=2d7c484e1b61749b742252f6ad1d265a79c27564;hb=a5cb6b99fb781d4b8e63f98d0644e02f75e54608;hp=047dba4322b9826528f3e5c02190ea8e18875a3c;hpb=a7dedb347b7dcd26ce93d4af81e77cfa3cf82d0f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/num.cpp b/src/modules/m_spanningtree/num.cpp index 047dba432..2d7c484e1 100644 --- a/src/modules/m_spanningtree/num.cpp +++ b/src/modules/m_spanningtree/num.cpp @@ -1,6 +1,7 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2018-2019 Sadie Powell * Copyright (C) 2016 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can @@ -21,8 +22,9 @@ #include "utils.h" #include "commands.h" +#include "remoteuser.h" -CmdResult CommandNum::HandleServer(TreeServer* server, std::vector& params) +CmdResult CommandNum::HandleServer(TreeServer* server, CommandBase::Params& params) { User* const target = ServerInstance->FindUUID(params[1]); if (!target) @@ -32,7 +34,7 @@ CmdResult CommandNum::HandleServer(TreeServer* server, std::vector& if (!localtarget) return CMD_SUCCESS; - Numeric::Numeric numeric(ConvToInt(params[2])); + Numeric::Numeric numeric(ConvToNum(params[2])); // Passing NULL is ok, in that case the numeric source becomes this server numeric.SetServer(Utils->FindServerID(params[0])); numeric.GetParams().insert(numeric.GetParams().end(), params.begin()+3, params.end()); @@ -41,7 +43,21 @@ CmdResult CommandNum::HandleServer(TreeServer* server, std::vector& return CMD_SUCCESS; } -RouteDescriptor CommandNum::GetRouting(User* user, const std::vector& params) +RouteDescriptor CommandNum::GetRouting(User* user, const Params& params) { return ROUTE_UNICAST(params[1]); } + +CommandNum::Builder::Builder(SpanningTree::RemoteUser* target, const Numeric::Numeric& numeric) + : CmdBuilder("NUM") +{ + TreeServer* const server = (numeric.GetServer() ? (static_cast(numeric.GetServer())) : Utils->TreeRoot); + push(server->GetId()).push(target->uuid).push(InspIRCd::Format("%03u", numeric.GetNumeric())); + const CommandBase::Params& params = numeric.GetParams(); + if (!params.empty()) + { + for (CommandBase::Params::const_iterator i = params.begin(); i != params.end()-1; ++i) + push(*i); + push_last(params.back()); + } +}