aboutsummaryrefslogtreecommitdiff
path: root/src/mod_vcard.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2021-02-15 13:12:52 +0100
committerBadlop <badlop@process-one.net>2021-02-16 13:09:33 +0100
commit72ecf91f08a8aa4232f2214de37bd74ecde011fa (patch)
tree37dab0ca917e8c5565ca3a631957c58f9fcaf476 /src/mod_vcard.erl
parentmake hooks and options work with rebar3 too (diff)
Return modules errors in set_vcard callback (#3502)
Diffstat (limited to '')
-rw-r--r--src/mod_vcard.erl12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl
index b5a927c6e..85734b358 100644
--- a/src/mod_vcard.erl
+++ b/src/mod_vcard.erl
@@ -403,7 +403,7 @@ vcard_iq_set(#iq{from = From, lang = Lang, sub_els = [VCard]} = IQ) ->
vcard_iq_set(Acc) ->
Acc.
--spec set_vcard(binary(), binary(), xmlel() | vcard_temp()) -> {error, badarg} | ok.
+-spec set_vcard(binary(), binary(), xmlel() | vcard_temp()) -> {error, badarg|binary()} | ok.
set_vcard(User, LServer, VCARD) ->
case jid:nodeprep(User) of
error ->
@@ -412,10 +412,14 @@ set_vcard(User, LServer, VCARD) ->
VCardEl = xmpp:encode(VCARD),
VCardSearch = make_vcard_search(User, LUser, LServer, VCardEl),
Mod = gen_mod:db_mod(LServer, ?MODULE),
- Mod:set_vcard(LUser, LServer, VCardEl, VCardSearch),
- ets_cache:delete(?VCARD_CACHE, {LUser, LServer},
+ case Mod:set_vcard(LUser, LServer, VCardEl, VCardSearch) of
+ {atomic, ok} ->
+ ets_cache:delete(?VCARD_CACHE, {LUser, LServer},
cache_nodes(Mod, LServer)),
- ok
+ ok;
+ {atomic, Error} ->
+ {error, Error}
+ end
end.
-spec string2lower(binary()) -> binary().