diff options
| author | 2023-06-04 00:43:17 +0100 | |
|---|---|---|
| committer | 2023-06-04 00:44:18 +0100 | |
| commit | db03b58d1cd60643ab53b2db4801a7ca4c44a6c0 (patch) | |
| tree | 1185b0760a32f5cd30831d75e2d6ddc7130765ce /src/modules/m_spanningtree | |
| parent | Fix rewriting commands in the 1205 compat layer. (diff) | |
Fix extracting data from the 1205 version/fullversion SINFO keys.
Diffstat (limited to 'src/modules/m_spanningtree')
| -rw-r--r-- | src/modules/m_spanningtree/sinfo.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/modules/m_spanningtree/sinfo.cpp b/src/modules/m_spanningtree/sinfo.cpp index 64e9d3105..1a2a0c2a4 100644 --- a/src/modules/m_spanningtree/sinfo.cpp +++ b/src/modules/m_spanningtree/sinfo.cpp @@ -52,13 +52,18 @@ CmdResult CommandSInfo::HandleServer(TreeServer* server, CommandBase::Params& pa { // InspIRCd-4.0.0-a10. sadie.testnet.inspircd.org :[597] Test // version server uid custom-version - std::string unused; - irc::spacesepstream versionstream(value); - versionstream.GetToken(server->rawversion); - server->rawversion.pop_back(); - versionstream.GetToken(unused); - versionstream.GetToken(unused); - server->customversion = versionstream.GetRemaining(); + irc::tokenstream versionstream(value); + + versionstream.GetMiddle(server->rawversion); + if (server->rawversion.back() == '.') + server->rawversion.pop_back(); + + for (std::string token; versionstream.GetTrailing(token); ) + server->customversion = token; + + const std::string sidprefix = INSP_FORMAT("[{}] ", server->GetId()); + if (!server->customversion.compare(0, sidprefix.size(), sidprefix)) + server->customversion.erase(0, sidprefix.size()); ServerInstance->Logs.Debug(MODNAME, "Extracted entries from fullversion key: rawversion={} customversion={}", server->rawversion, server->customversion); @@ -66,12 +71,14 @@ CmdResult CommandSInfo::HandleServer(TreeServer* server, CommandBase::Params& pa else if (irc::equals(key, "version")) { // InspIRCd-4. testnet.inspircd.org :Test - std::string unused; - irc::spacesepstream versionstream(value); - versionstream.GetToken(server->rawbranch); - server->rawbranch.pop_back(); - versionstream.GetToken(unused); - server->customversion = versionstream.GetRemaining(); + irc::tokenstream versionstream(value); + + versionstream.GetMiddle(server->rawbranch); + if (server->rawbranch.back() == '.') + server->rawbranch.pop_back(); + + for (std::string token; versionstream.GetTrailing(token); ) + server->customversion = token; ServerInstance->Logs.Debug(MODNAME, "Extracted entries from version key: rawbranch={} customversion={}", server->rawbranch, server->customversion); |
