diff --git a/ChangeLog b/ChangeLog index 18b96220c..9ac30a97f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-09-23 Jean-Sébastien Pédron + + * src/mod_vcard.erl (process_sm_iq): Fix a bug where a badmatch + exception was raised when the user didn't have a vCard. + (remove_user): Fix a bug where the exmpp_jid module was use instead of + exmpp_stringprep. + 2008-09-22 Jean-Sébastien Pédron * src/mod_vcard.erl (get_sm_features): Remove unappropriate diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl index 0a0b9bf21..16967fbb0 100644 --- a/src/mod_vcard.erl +++ b/src/mod_vcard.erl @@ -172,7 +172,7 @@ process_sm_iq(_From, To, #iq{type = get} = IQ_Rec) -> F = fun() -> mnesia:read({vcard, US}) end, - [VCard | _] = case mnesia:transaction(F) of + Els = case mnesia:transaction(F) of {atomic, Rs} -> lists:map(fun(R) -> R#vcard.vcard @@ -180,7 +180,12 @@ process_sm_iq(_From, To, #iq{type = get} = IQ_Rec) -> {aborted, _Reason} -> [] end, - exmpp_iq:result(IQ_Rec, VCard); + case Els of + [VCard | _] -> + exmpp_iq:result(IQ_Rec, VCard); + _ -> + exmpp_iq:result(IQ_Rec) + end; process_sm_iq(From, _To, #iq{type = set, payload = Request} = IQ_Rec) -> #jid{node = User, ldomain = LServer} = From, case lists:member(LServer, ?MYHOSTS) of @@ -643,8 +648,8 @@ reindex_vcards() -> remove_user(User, Server) -> - LUser = exmpp_jid:nodeprep(User), - LServer = exmpp_jid:nameprep(Server), + LUser = exmpp_stringprep:nodeprep(User), + LServer = exmpp_stringprep:nameprep(Server), US = {LUser, LServer}, F = fun() -> mnesia:delete({vcard, US}),