aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-05-17 20:53:18 +0100
committerGravatar Sadie Powell2022-05-18 09:06:38 +0100
commitbd3fc1e1553014881413bbc787d7f8d37f0e06cc (patch)
treeb7fa03ee2f03c08b5802df5f812a582abb733714 /src
parentDeprecate the (raw)version SINFO keys and split out customversion/rawbranch. (diff)
Precache the version numerics in the VERSION command class.
Diffstat (limited to 'src')
-rw-r--r--src/coremods/core_info/cmd_version.cpp31
-rw-r--r--src/coremods/core_info/core_info.cpp1
-rw-r--r--src/coremods/core_info/core_info.h3
3 files changed, 20 insertions, 15 deletions
diff --git a/src/coremods/core_info/cmd_version.cpp b/src/coremods/core_info/cmd_version.cpp
index aec5b5f95..6ba604e56 100644
--- a/src/coremods/core_info/cmd_version.cpp
+++ b/src/coremods/core_info/cmd_version.cpp
@@ -29,27 +29,28 @@
CommandVersion::CommandVersion(Module* parent, ISupportManager& isupportmgr)
: Command(parent, "VERSION", 0, 0)
, isupport(isupportmgr)
+ , operversion(RPL_VERSION)
+ , version(RPL_VERSION)
{
syntax = { "[<servername>]" };
}
-CmdResult CommandVersion::Handle(User* user, const Params& parameters)
+void CommandVersion::BuildNumerics()
{
- Numeric::Numeric numeric(RPL_VERSION);
- if (user->IsOper())
- {
- numeric.push(INSPIRCD_VERSION ".");
- numeric.push(ServerInstance->Config->ServerName);
- numeric.push("[" + ServerInstance->Config->GetSID() + "] " + ServerInstance->Config->CustomVersion);
- }
- else
- {
- numeric.push(INSPIRCD_BRANCH ".");
- numeric.push(ServerInstance->Config->GetServerName());
- numeric.push(ServerInstance->Config->CustomVersion);
- }
- user->WriteNumeric(numeric);
+ version.GetParams().clear();
+ version.push(INSPIRCD_BRANCH ".");
+ version.push(ServerInstance->Config->GetServerName());
+ version.push(ServerInstance->Config->CustomVersion);
+
+ operversion.GetParams().clear();
+ operversion.push(INSPIRCD_VERSION ".");
+ operversion.push(ServerInstance->Config->ServerName);
+ operversion.push("[" + ServerInstance->Config->GetSID() + "] " + ServerInstance->Config->CustomVersion);
+}
+CmdResult CommandVersion::Handle(User* user, const Params& parameters)
+{
+ user->WriteNumeric(user->IsOper() ? operversion : version);
LocalUser* luser = IS_LOCAL(user);
if (luser)
isupport.SendTo(luser);
diff --git a/src/coremods/core_info/core_info.cpp b/src/coremods/core_info/core_info.cpp
index 09247b805..0583ddac3 100644
--- a/src/coremods/core_info/core_info.cpp
+++ b/src/coremods/core_info/core_info.cpp
@@ -149,6 +149,7 @@ public:
cmdadmin.admindesc = tag->getString("description");
cmdadmin.adminemail = tag->getString("email", "noreply@" + ServerInstance->Config->GetServerName(), 1);
+ cmdversion.BuildNumerics();
ServerInstance->AtomicActions.AddAction(new ISupportAction(isupport));
}
diff --git a/src/coremods/core_info/core_info.h b/src/coremods/core_info/core_info.h
index 8c3308e01..64c8df426 100644
--- a/src/coremods/core_info/core_info.h
+++ b/src/coremods/core_info/core_info.h
@@ -148,8 +148,11 @@ class CommandVersion final
{
private:
ISupportManager& isupport;
+ Numeric::Numeric operversion;
+ Numeric::Numeric version;
public:
CommandVersion(Module* parent, ISupportManager& isupportmgr);
+ void BuildNumerics();
CmdResult Handle(User* user, const Params& parameters) override;
};