summaryrefslogtreecommitdiff
path: root/src/jlib.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/jlib.erl')
-rw-r--r--src/jlib.erl34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/jlib.erl b/src/jlib.erl
index ced40894..839d6739 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -227,25 +227,7 @@ jid_to_string({Node, Server, Resource}) ->
is_nodename([]) ->
false;
is_nodename(J) ->
- is_nodename1(J).
-
-is_nodename1([C | J])
- when (C =< 32) or
- (C == $") or
- (C == $&) or
- (C == $') or
- (C == $:) or
- (C == $<) or
- (C == $>) or
- (C == $@) or
- (C == $/) or
- (C == 127)
- ->
- false;
-is_nodename1([C | J]) ->
- is_nodename1(J);
-is_nodename1([]) ->
- true.
+ nodeprep(J).
@@ -301,7 +283,19 @@ resourceprep(S) ->
jid_tolower(#jid{luser = U, lserver = S, lresource = R}) ->
{U, S, R};
jid_tolower({U, S, R}) ->
- {tolower(U), tolower(S), R}.
+ case stringprep:nodeprep(U) of
+ error -> error;
+ LUser ->
+ case stringprep:nameprep(S) of
+ error -> error;
+ LServer ->
+ case stringprep:resourceprep(R) of
+ error -> error;
+ LResource ->
+ {LUser, LServer, LResource}
+ end
+ end
+ end.
jid_remove_resource(#jid{} = JID) ->
JID#jid{resource = "", lresource = ""};