diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-11-13 14:17:21 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-11-13 14:17:21 +0300 |
commit | ebefd0d8d6bd0162f0067f85e565afde83a962ca (patch) | |
tree | a57ee60843688e46a7f805040f6951ae8c084041 /src/mod_vcard.erl | |
parent | Don't auto-decode forwarded payload (diff) |
Add more control for decoding IQ payloads
Diffstat (limited to '')
-rw-r--r-- | src/mod_vcard.erl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl index 8333d32cf..35b907f95 100644 --- a/src/mod_vcard.erl +++ b/src/mod_vcard.erl @@ -37,7 +37,7 @@ remove_user/2, export/1, import/1, import/3, depends/2, process_search/1, process_vcard/1, get_vcard/2, disco_items/5, disco_features/5, disco_identity/5, - mod_opt_type/1, set_vcard/3, make_vcard_search/4]). + decode_iq_subel/1, mod_opt_type/1, set_vcard/3, make_vcard_search/4]). -include("ejabberd.hrl"). -include("logger.hrl"). @@ -167,6 +167,14 @@ get_sm_features(Acc, _From, _To, Node, _Lang) -> _ -> Acc end. +-spec decode_iq_subel(xmpp_element() | xmlel()) -> xmpp_element() | xmlel(). +%% Tell gen_iq_handler not to decode vcard elements +decode_iq_subel(El) -> + case xmpp:get_ns(El) of + ?NS_VCARD -> xmpp:encode(El); + _ -> xmpp:decode(El) + end. + -spec process_local_iq(iq()) -> iq(). process_local_iq(#iq{type = set, lang = Lang} = IQ) -> Txt = <<"Value 'set' of 'type' attribute is not allowed">>, |