summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-06-11 15:07:27 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-06-11 15:07:27 +0200
commited11e05d5b6463f582dc22140794837e97796bf9 (patch)
treeccc6b76a63d622ac168a56e95f0f7ecbaf12fe5c /src/modules
parent91a069642bce550ccc3b8081ba33b8b04109917f (diff)
Send the membership id when kicking a remote user and drop KICKs with mismatching membership ids
This fixes the desync happening when a PART+JOIN crosses a KICK targetting the same user.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_spanningtree/main.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index 8154016e7..45f219286 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -624,6 +624,9 @@ void ModuleSpanningTree::OnUserKick(User* source, Membership* memb, const std::s
CmdBuilder params(source, "KICK");
params.push_back(memb->chan->name);
params.push_back(memb->user->uuid);
+ // If a remote user is being kicked by us then send the membership id in the kick too
+ if (!IS_LOCAL(memb->user))
+ params.push_int(memb->id);
params.push_last(reason);
params.Broadcast();
}