From 062614ee7ae053a94c9dd6d06c517c6a139134ff Mon Sep 17 00:00:00 2001 From: Martin Dosch Date: Thu, 2 Mar 2023 20:28:51 +0100 Subject: [PATCH] Allow JIDs without localpart. --- CHANGELOG.md | 1 + jid.go | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc2d8bc..2fe2a6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Changed - Print `--help` output to stdout instead of stderr. - Print sent stanzas when `--debug` is used (via go-xmpp commit 9129a110df1b). +- Allow JIDs without localpart. ## [v0.5.6] 2022-11-11 ### Added diff --git a/jid.go b/jid.go index 95ff508..0c5e5be 100644 --- a/jid.go +++ b/jid.go @@ -50,7 +50,7 @@ func MarshalJID(input string) (string, error) { switch { case sep == -1: // There is no @ sign, and therefore no localpart. - return input, errors.New("Invalid JID: " + input) + domainpart = s case sep == 0: // The JID starts with an @ sign (invalid empty localpart) err = errors.New("Invalid JID:" + input) @@ -71,17 +71,24 @@ func MarshalJID(input string) (string, error) { // are taken. domainpart = strings.TrimSuffix(domainpart, ".") + var jid string if !utf8.ValidString(localpart) || !utf8.ValidString(domainpart) || !utf8.ValidString(resourcepart) { return input, errors.New("Invalid JID: " + input) } - if localpart == "" || domainpart == "" { + if domainpart == "" { return input, errors.New("Invalid JID: " + input) } + if localpart == "" { + jid = domainpart + } else { + jid = localpart + "@" + domainpart + } + if resourcepart == "" { - return localpart + "@" + domainpart, err + return jid, err } - return localpart + "@" + domainpart + "/" + resourcepart, err + return jid + "/" + resourcepart, err }