aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/capab.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2020-12-05 03:15:44 +0000
committerGravatar Sadie Powell2020-12-05 03:15:44 +0000
commit44ffefb3561bb5a48369685a50d1ff1c23503eb2 (patch)
treee7399d6d3913ef1dddfe04451082fc4342fe3e16 /src/modules/m_spanningtree/capab.cpp
parentMatch CAPAB subcommands using the IRC casemapping. (diff)
Omit module prefixes/suffixes when linking using the 1206 protocol.
Diffstat (limited to 'src/modules/m_spanningtree/capab.cpp')
-rw-r--r--src/modules/m_spanningtree/capab.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/modules/m_spanningtree/capab.cpp b/src/modules/m_spanningtree/capab.cpp
index 57317225a..92589c84c 100644
--- a/src/modules/m_spanningtree/capab.cpp
+++ b/src/modules/m_spanningtree/capab.cpp
@@ -44,12 +44,21 @@ std::string TreeSocket::MyModules(int filter)
if ((!(mod->properties & filter)))
continue;
- if (i != modlist.begin())
+ if (!capabilities.empty())
capabilities.push_back(' ');
- std::string modname = i->first;
- modname.replace(modname.end() - strlen(DLL_EXTENSION) - 1, modname.end(), ".so");
- capabilities.append(modname);
+ size_t endpos = i->first.length() - strlen(DLL_EXTENSION);
+ if (proto_version <= PROTO_INSPIRCD_30)
+ {
+ // Replace m_foo.dylib with m_foo.so
+ capabilities.append(i->first.substr(0, endpos)).append(".so");
+ }
+ else
+ {
+ // Replace m_foo.dylib with foo
+ size_t startpos = i->first.compare(0, 2, "m_", 2) ? 0 : 2;
+ capabilities.append(i->first.substr(startpos, endpos - startpos));
+ }
std::string link_data;
mod->GetLinkData(link_data);