GNOME Bugzilla – Bug 306369
Gossip doesn't casefold JIDs.
Last modified: 2006-06-17 10:34:24 UTC
Please describe the problem: Gossips considers "foo@domain.tld" and "Foo@domain.tld" to be two different persons. When "foo@domain.tld" has been added to the roster before and the remote user uses "Foo@domain.tld" to login, Gossip gets confused. Steps to reproduce: Let someone login with a for example capitalized version of his/her JID (the node part). Actual results: Expected results: Does this happen every time? Yes Other information: I couldn't trace the fact that the node part of the JID is meant to be case-insensitive back to a section of the XMPP standard. But as far as I know both jabberd1.4 and jabberd2.0 treat them as case-folded JIDs.
Yea, the fact that you couldn't trace it back to the XMPP standard and the fact that it is not explicitly defined we need to be case insensitive means it is more than likely a buggy Jabber server? Not sure how much this affects ALL users of Gossip, unfortunately it is not top of the pops for us to fix at the moment.
It is in fact traceable, see http://www.xmpp.org/specs/rfc3920.html#security-stringprep and the Stringprep RFC: ftp://ftp.isi.edu/in-notes/rfc3454.txt. Bit of explaining log with one of the XMPP familiar people: paul: do you know if there is something in XMPP about JID-case-insensitivity? paul: I looked for it but couldn't find it Matthias: yes there is Matthias: it's called 'stringprep profile' paul: yes completely did not understand that part Matthias: just a big table about what unicode codepoint has to be mapped to which other codepoint to normalize JIDs Matthias: an part of it is that big characters are mapped to their lowercase equivalents Matthias: others are the 'ß' has to be mapped to 'ss' ... therefore straße@example.com is equivalent to strasse@example.com Matthias: there are three different stringprep profiles used for XMPP Matthias: one for the user part of a JID (the node), one for the domain and one for the resource Matthias: the domain is mapped with the same profile as IDNs ... Matthias: the node part is very similar but does allow/forbid other characters Matthias: the resource part is case sensitive!! paul: do you have a XMPP.org link? Matthias: you have to read the stringprep RFC ... the XMPP-core RFC does contain references to this RFC ... by just listing which tables of this RFC have to be used for nodes/resources
*** Bug 333726 has been marked as a duplicate of this bug. ***
I have made the node part casefolded (the part before @), according to the nodeprep profile. We are still not doing the full stringprep stuff yet of course (normalization missing), but I think I will close this bug since the fix should make foo@ and Foo @ be treated correctly. If you can test and confirm or reopen that would be great.