From 663028421f6905cb9ee68fe795af71a60564ae53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Sch=C3=A4fer?= Date: Wed, 22 Dec 2021 13:06:32 +0100 Subject: mod_roster: pass correct username to roster-item-removed The other invocations use it that way, and the only listener in trunk which uses it (in mod_presence) expects it that way. Passing the username of the JID from the removed entry causes incorrect unavailable presence stanzas to be sent, allegedly kicking people off MUCs. Fixes #1121. --- plugins/mod_roster.lua | 2 +- spec/scansion/issue1121.scs | 75 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 spec/scansion/issue1121.scs diff --git a/plugins/mod_roster.lua b/plugins/mod_roster.lua index 39d59cbd..29466d5b 100644 --- a/plugins/mod_roster.lua +++ b/plugins/mod_roster.lua @@ -74,7 +74,7 @@ module:hook("iq/self/jabber:iq:roster:query", function(event) local r_item = roster[jid]; if r_item then module:fire_event("roster-item-removed", { - username = node, jid = jid, item = r_item, origin = session, roster = roster, + username = from_node, jid = jid, item = r_item, origin = session, roster = roster, }); local success, err_type, err_cond, err_msg = rm_remove_from_roster(session, jid); if success then diff --git a/spec/scansion/issue1121.scs b/spec/scansion/issue1121.scs new file mode 100644 index 00000000..68d728b9 --- /dev/null +++ b/spec/scansion/issue1121.scs @@ -0,0 +1,75 @@ +# When removing roster contact, Prosody should send directed "unavailable" presence but sends global unavailable presence + +[Client] Romeo + jid: romeo@localhost + password: password + +[Client] Juliet + jid: juliet@localhost + password: password + +----- + +Romeo connects + +Romeo sends + + +Romeo receives + + +Juliet connects + +Juliet sends + + +Juliet receives + + +Romeo sends + + +Romeo receives + + +Juliet receives + + +Juliet sends + + +Romeo receives + + +Juliet sends + + +Juliet receives + + +Romeo receives + + +Romeo sends + + +Juliet receives + + +Romeo receives + + +Juliet sends + + + + + + +Juliet receives + + +Romeo receives + + +Romeo disconnects -- cgit v1.2.3