Annotate

spec/scansion/issue1121.scs @ 12100:0b14b541fd27

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.
author Jonas Schäfer <jonas@wielicki.name>
date Wed, 22 Dec 2021 13:06:32 +0100
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12100
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
1 # When removing roster contact, Prosody should send directed "unavailable" presence but sends global unavailable presence
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
2
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
3 [Client] Romeo
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
4 jid: romeo@localhost
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
5 password: password
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
6
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
7 [Client] Juliet
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
8 jid: juliet@localhost
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
9 password: password
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
10
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
11 -----
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
12
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
13 Romeo connects
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
14
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
15 Romeo sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
16 <presence/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
17
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
18 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
19 <presence from="${Romeo's full JID}"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
20
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
21 Juliet connects
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
22
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
23 Juliet sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
24 <presence/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
25
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
26 Juliet receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
27 <presence from="${Juliet's full JID}"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
28
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
29 Romeo sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
30 <presence to="juliet@localhost" type="subscribe"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
31
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
32 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
33 <presence from="juliet@localhost" to="romeo@localhost"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
34
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
35 Juliet receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
36 <presence from="romeo@localhost" to="juliet@localhost" type="subscribe"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
37
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
38 Juliet sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
39 <presence to="romeo@localhost" type="subscribed"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
40
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
41 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
42 <presence from="${Juliet's full JID}" to="romeo@localhost"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
43
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
44 Juliet sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
45 <presence to="romeo@localhost" type="subscribe"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
46
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
47 Juliet receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
48 <presence from="romeo@localhost" to="juliet@localhost"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
49
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
50 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
51 <presence from="juliet@localhost" to="romeo@localhost" type="subscribe"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
52
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
53 Romeo sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
54 <presence to="juliet@localhost" type="subscribed"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
55
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
56 Juliet receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
57 <presence from="${Romeo's full JID}" to="juliet@localhost"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
58
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
59 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
60 <presence from="${Juliet's full JID}" to="romeo@localhost"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
61
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
62 Juliet sends
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
63 <iq type="set" id="iq1">
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
64 <query xmlns="jabber:iq:roster">
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
65 <item jid="romeo@localhost" subscription="remove"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
66 </query>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
67 </iq>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
68
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
69 Juliet receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
70 <iq type="result" id="iq1"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
71
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
72 Romeo receives
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
73 <presence from="${Juliet's full JID}" to="romeo@localhost" type="unavailable"/>
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
74
0b14b541fd27 mod_roster: pass correct username to roster-item-removed
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
75 Romeo disconnects