"example.net/@/" should be a valid JID.

Retab JID file
This commit is contained in:
Sam Whited 2014-12-02 10:09:31 -05:00
parent 3fc834c067
commit 4f9dd82457
1 changed files with 147 additions and 145 deletions

View File

@ -78,8 +78,15 @@ public final class Jid {
String finaljid; String finaljid;
final int domainpartStart; final int domainpartStart;
if (atCount >= 1) {
final int atLoc = jid.indexOf("@"); final int atLoc = jid.indexOf("@");
final int slashLoc = jid.indexOf("/");
// If there is no "@" in the JID (eg. "example.net" or "example.net/resource")
// or there are one or more "@" signs but they're all in the resourcepart (eg. "example.net/@/rp@"):
if (atCount == 0 || (atCount > 0 && slashLoc != -1 && atLoc > slashLoc)) {
localpart = "";
finaljid = "";
domainpartStart = 0;
} else {
final String lp = jid.substring(0, atLoc); final String lp = jid.substring(0, atLoc);
try { try {
localpart = Stringprep.nodeprep(lp); localpart = Stringprep.nodeprep(lp);
@ -91,15 +98,10 @@ public final class Jid {
} }
domainpartStart = atLoc + 1; domainpartStart = atLoc + 1;
finaljid = lp + "@"; finaljid = lp + "@";
} else {
localpart = "";
finaljid = "";
domainpartStart = 0;
} }
final String dp; final String dp;
if (slashCount >= 1) { if (slashCount > 0) {
final int slashLoc = jid.indexOf("/");
final String rp = jid.substring(slashLoc + 1, jid.length()); final String rp = jid.substring(slashLoc + 1, jid.length());
try { try {
resourcepart = Stringprep.resourceprep(rp); resourcepart = Stringprep.resourceprep(rp);