aboutsummaryrefslogtreecommitdiffstats
path: root/modules/spanningtree/capab.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2026-06-24 13:41:06 +0100
committerGravatar Sadie Powell2026-06-24 21:22:25 +0100
commitd1695ff82dd85eecaeb56bd47cc4c2333e1abcf3 (patch)
treeb0c93c1a2cbe4140719ce383525dba034d57f303 /modules/spanningtree/capab.cpp
parentDeduplicate mismatch error messages. (diff)
Parse module link data when we receive it.
Diffstat (limited to 'modules/spanningtree/capab.cpp')
-rw-r--r--modules/spanningtree/capab.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/modules/spanningtree/capab.cpp b/modules/spanningtree/capab.cpp
index 161565843..86be748ac 100644
--- a/modules/spanningtree/capab.cpp
+++ b/modules/spanningtree/capab.cpp
@@ -123,7 +123,7 @@ namespace
}
// END COMPATIBILITY CODE.
}
- modules[modname] = SpanningTreeUtilities::BuildLinkString(module);
+ module->GetLinkData(modules[modname]);
}
return modules;
}
@@ -208,7 +208,7 @@ namespace
std::ostringstream diffconfig;
std::ostringstream localmissing;
std::ostringstream remotemissing;
- for (const auto& [name, linkdata] : *remote)
+ for (const auto& [name, otherdata] : *remote)
{
auto moditer = local.find(name);
if (moditer == local.end())
@@ -220,7 +220,6 @@ namespace
}
// Parse and compare the link data.
- Module::LinkData otherdata = Percent::DecodeQuery(linkdata);
if (!CompareModuleData(moditer->second, otherdata, diffconfig))
okay = false;
local.erase(moditer);
@@ -262,12 +261,11 @@ namespace
std::string FormatModules(ModuleFlags property, uint16_t protocol)
{
std::ostringstream modules;
- CapabData::ModuleMap mymodules = BuildModuleList(property, protocol);
- for (const auto& [module, linkdata] : mymodules)
+ for (const auto& [module, linkdata] : BuildModuleList(property, protocol))
{
modules << module;
if (!linkdata.empty())
- modules << '=' << linkdata;
+ modules << '=' << Percent::EncodeQuery(linkdata);
modules << ' ';
}
return modules.str();
@@ -339,11 +337,14 @@ namespace
StringSplitter modstream(modlist);
for (std::string mod; modstream.GetToken(mod); )
{
- size_t split = mod.find('=');
+ const auto split = mod.find('=');
if (split == std::string::npos)
- map.emplace(mod, "");
+ map.emplace(mod, Module::LinkData()); // No link data.
else
- map.emplace(mod.substr(0, split), mod.substr(split + 1));
+ {
+ const auto linkdata = Percent::DecodeQuery(mod.substr(split + 1));
+ map.emplace(mod.substr(0, split), linkdata);
+ }
}
}
}