convert empty resources in messages to bare jid

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/xml/Element.java     |  3 +
src/main/java/eu/siacs/conversations/xmpp/InvalidJid.java | 11 ++++++++
2 files changed, 12 insertions(+), 2 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/xml/Element.java 🔗

@@ -12,6 +12,7 @@ import java.util.Locale;
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.utils.XmlHelper;
 import eu.siacs.conversations.xmpp.InvalidJid;
+import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
 import rocks.xmpp.addr.Jid;
 
 public class Element {
@@ -154,7 +155,7 @@ public class Element {
 			try {
 				return Jid.ofEscaped(jid);
 			} catch (final IllegalArgumentException e) {
-				return new InvalidJid(jid);
+				return InvalidJid.of(jid, this instanceof MessagePacket);
 			}
 		}
 		return null;

src/main/java/eu/siacs/conversations/xmpp/InvalidJid.java 🔗

@@ -37,9 +37,18 @@ public class InvalidJid implements Jid {
 
 	private final String value;
 
-	public InvalidJid(String jid) {
+	private InvalidJid(String jid) {
 		this.value = jid;
 	}
+	public  static Jid of(String jid, boolean fallback) {
+		final int pos = jid.indexOf('/');
+		if (fallback && pos >= 0 && jid.length() >= pos + 1) {
+			if (jid.substring(pos+1).trim().isEmpty()) {
+				return Jid.ofEscaped(jid.substring(0,pos));
+			}
+		}
+		return new InvalidJid(jid);
+	}
 
 	@Override
 	@NonNull