summaryrefslogtreecommitdiff
path: root/src/mod_muc_admin.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_muc_admin.erl')
-rw-r--r--src/mod_muc_admin.erl19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl
index 708d4ff2..31f26787 100644
--- a/src/mod_muc_admin.erl
+++ b/src/mod_muc_admin.erl
@@ -242,14 +242,17 @@ muc_online_rooms(ServerHost) ->
end, Hosts).
muc_register_nick(Nick, JIDBinary, Domain) ->
- JID = jlib:string_to_jid(JIDBinary),
- %{jid, UID, Host, _,_,_,_} = jlib:string_to_jid(JIDBinary),
- F = fun (MHost, MNick) ->
- mnesia:write(#muc_registered{us_host=MHost, nick=MNick})
- end,
- case mnesia:transaction(F, [{{JID#jid.luser, JID#jid.lserver}, Domain}, Nick]) of
- {atomic, ok} -> ok;
- {aborted, _Error} -> error
+ try jid:decode(JIDBinary) of
+ JID ->
+ F = fun (MHost, MNick) ->
+ mnesia:write(#muc_registered{us_host=MHost, nick=MNick})
+ end,
+ case mnesia:transaction(F, [{{JID#jid.luser, JID#jid.lserver},
+ Domain}, Nick]) of
+ {atomic, ok} -> ok;
+ {aborted, _Error} -> error
+ end
+ catch _:{bad_jid, _} -> throw({error, "Malformed JID"})
end.
muc_unregister_nick(Nick) ->