Add argument guards to roster commands
This commit is contained in:
parent
6a0b01fe7f
commit
3d7fa15be7
|
@ -1243,23 +1243,42 @@ update_vcard_els(Data, ContentList, Els1) ->
|
||||||
%%%
|
%%%
|
||||||
|
|
||||||
add_rosteritem(LocalUser, LocalServer, User, Server, Nick, Group, Subs) ->
|
add_rosteritem(LocalUser, LocalServer, User, Server, Nick, Group, Subs) ->
|
||||||
Jid = jid:make(LocalUser, LocalServer),
|
case {jid:make(LocalUser, LocalServer), jid:make(User, Server)} of
|
||||||
|
{error, _} ->
|
||||||
|
throw({error, "Invalid 'localuser'/'localserver'"});
|
||||||
|
{_, error} ->
|
||||||
|
throw({error, "Invalid 'user'/'server'"});
|
||||||
|
{Jid, _Jid2} ->
|
||||||
RosterItem = build_roster_item(User, Server, {add, Nick, Subs, Group}),
|
RosterItem = build_roster_item(User, Server, {add, Nick, Subs, Group}),
|
||||||
case mod_roster:set_item_and_notify_clients(Jid, RosterItem, true) of
|
case mod_roster:set_item_and_notify_clients(Jid, RosterItem, true) of
|
||||||
ok -> ok;
|
ok -> ok;
|
||||||
_ -> error
|
_ -> error
|
||||||
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
subscribe(LU, LS, User, Server, Nick, Group, Subscription, _Xattrs) ->
|
subscribe(LU, LS, User, Server, Nick, Group, Subscription, _Xattrs) ->
|
||||||
|
case {jid:make(LU, LS), jid:make(User, Server)} of
|
||||||
|
{error, _} ->
|
||||||
|
throw({error, "Invalid 'localuser'/'localserver'"});
|
||||||
|
{_, error} ->
|
||||||
|
throw({error, "Invalid 'user'/'server'"});
|
||||||
|
{_Jid, _Jid2} ->
|
||||||
ItemEl = build_roster_item(User, Server, {add, Nick, Subscription, Group}),
|
ItemEl = build_roster_item(User, Server, {add, Nick, Subscription, Group}),
|
||||||
mod_roster:set_items(LU, LS, #roster_query{items = [ItemEl]}).
|
mod_roster:set_items(LU, LS, #roster_query{items = [ItemEl]})
|
||||||
|
end.
|
||||||
|
|
||||||
delete_rosteritem(LocalUser, LocalServer, User, Server) ->
|
delete_rosteritem(LocalUser, LocalServer, User, Server) ->
|
||||||
Jid = jid:make(LocalUser, LocalServer),
|
case {jid:make(LocalUser, LocalServer), jid:make(User, Server)} of
|
||||||
|
{error, _} ->
|
||||||
|
throw({error, "Invalid 'localuser'/'localserver'"});
|
||||||
|
{_, error} ->
|
||||||
|
throw({error, "Invalid 'user'/'server'"});
|
||||||
|
{Jid, _Jid2} ->
|
||||||
RosterItem = build_roster_item(User, Server, remove),
|
RosterItem = build_roster_item(User, Server, remove),
|
||||||
case mod_roster:set_item_and_notify_clients(Jid, RosterItem, true) of
|
case mod_roster:set_item_and_notify_clients(Jid, RosterItem, true) of
|
||||||
ok -> ok;
|
ok -> ok;
|
||||||
_ -> error
|
_ -> error
|
||||||
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%% -----------------------------
|
%% -----------------------------
|
||||||
|
@ -1267,8 +1286,13 @@ delete_rosteritem(LocalUser, LocalServer, User, Server) ->
|
||||||
%% -----------------------------
|
%% -----------------------------
|
||||||
|
|
||||||
get_roster(User, Server) ->
|
get_roster(User, Server) ->
|
||||||
Items = ejabberd_hooks:run_fold(roster_get, Server, [], [{User, Server}]),
|
case jid:make(User, Server) of
|
||||||
make_roster_xmlrpc(Items).
|
error ->
|
||||||
|
throw({error, "Invalid 'user'/'server'"});
|
||||||
|
#jid{luser = U, lserver = S} ->
|
||||||
|
Items = ejabberd_hooks:run_fold(roster_get, S, [], [{U, S}]),
|
||||||
|
make_roster_xmlrpc(Items)
|
||||||
|
end.
|
||||||
|
|
||||||
%% Note: if a contact is in several groups, the contact is returned
|
%% Note: if a contact is in several groups, the contact is returned
|
||||||
%% several times, each one in a different group.
|
%% several times, each one in a different group.
|
||||||
|
|
Loading…
Reference in New Issue