summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/compat.cpp
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-06-11 14:30:17 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-06-11 14:30:17 +0200
commitf3ebd00f119f322f2887f88c37d3fce7743d9587 (patch)
tree980d45bd2d48d1f58c53969e56a979554191a0f0 /src/modules/m_spanningtree/compat.cpp
parentc8f92d97c2cd92a07bbb76b96a67cd089c7e3407 (diff)
m_spanningtree Send, parse and translate IJOINs with membership ids
Diffstat (limited to 'src/modules/m_spanningtree/compat.cpp')
-rw-r--r--src/modules/m_spanningtree/compat.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/modules/m_spanningtree/compat.cpp b/src/modules/m_spanningtree/compat.cpp
index ca9fbfa6a..dc4315cb7 100644
--- a/src/modules/m_spanningtree/compat.cpp
+++ b/src/modules/m_spanningtree/compat.cpp
@@ -47,11 +47,17 @@ void TreeSocket::WriteLine(const std::string& original_line)
if (command == "IJOIN")
{
// Convert
- // :<uid> IJOIN <chan> [<ts> [<flags>]]
+ // :<uid> IJOIN <chan> <membid> [<ts> [<flags>]]
// to
// :<sid> FJOIN <chan> <ts> + [<flags>],<uuid>
std::string::size_type c = line.find(' ', b + 1);
if (c == std::string::npos)
+ return;
+
+ std::string::size_type d = line.find(' ', c + 1);
+ // Erase membership id first
+ line.erase(c, d-c);
+ if (d == std::string::npos)
{
// No TS or modes in the command
// :22DAAAAAB IJOIN #chan
@@ -66,7 +72,7 @@ void TreeSocket::WriteLine(const std::string& original_line)
}
else
{
- std::string::size_type d = line.find(' ', c + 1);
+ d = line.find(' ', c + 1);
if (d == std::string::npos)
{
// TS present, no modes