diff options
| author | 2026-06-24 13:41:06 +0100 | |
|---|---|---|
| committer | 2026-06-24 21:22:25 +0100 | |
| commit | d1695ff82dd85eecaeb56bd47cc4c2333e1abcf3 (patch) | |
| tree | b0c93c1a2cbe4140719ce383525dba034d57f303 /modules/spanningtree/capab.cpp | |
| parent | Deduplicate 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.cpp | 19 |
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); + } } } } |
