Do not try to retreive vCards via local SM for foreign JIDs

This commit is contained in:
Evgeniy Khramtsov 2013-11-13 20:40:56 +10:00
parent 318b0f2208
commit 003fd321ee
1 changed files with 18 additions and 11 deletions

View File

@ -187,17 +187,24 @@ get_rosteritem_name([], _, _) -> <<"">>;
get_rosteritem_name([ModVcard], U, S) ->
From = jlib:make_jid(<<"">>, S, jlib:atom_to_binary(?MODULE)),
To = jlib:make_jid(U, S, <<"">>),
IQ = {iq, <<"">>, get, <<"vcard-temp">>, <<"">>,
#xmlel{name = <<"vCard">>,
attrs = [{<<"xmlns">>, <<"vcard-temp">>}],
children = []}},
IQ_Vcard = ModVcard:process_sm_iq(From, To, IQ),
try get_rosteritem_name_vcard(IQ_Vcard#iq.sub_el) catch
E1:E2 ->
?ERROR_MSG("Error ~p found when trying to get the "
"vCard of ~s@~s in ~p:~n ~p",
[E1, U, S, ModVcard, E2]),
<<"">>
case lists:member(To#jid.lserver, ?MYHOSTS) of
true ->
IQ = {iq, <<"">>, get, <<"vcard-temp">>, <<"">>,
#xmlel{name = <<"vCard">>,
attrs = [{<<"xmlns">>, <<"vcard-temp">>}],
children = []}},
IQ_Vcard = ModVcard:process_sm_iq(From, To, IQ),
case catch get_rosteritem_name_vcard(IQ_Vcard#iq.sub_el) of
{'EXIT', Err} ->
?ERROR_MSG("Error found when trying to get the "
"vCard of ~s@~s in ~p:~n ~p",
[U, S, ModVcard, Err]),
<<"">>;
NickName ->
NickName
end;
false ->
<<"">>
end.
get_rosteritem_name_vcard([]) -> <<"">>;