aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 72c121336..a567303b6 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -895,10 +895,16 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
IQ = jlib:iq_query_info(Packet),
case IQ of
#iq{xmlns = ?NS_VCARD} ->
- ResIQ = mod_vcard:process_sm_iq(From, To, IQ),
- ejabberd_router:route(To,
- From,
- jlib:iq_to_xml(ResIQ)),
+ Host = StateData#state.server,
+ case ets:lookup(sm_iqtable, {?NS_VCARD, Host}) of
+ [{_, Module, Function, Opts}] ->
+ gen_iq_handler:handle(Host, Module, Function, Opts,
+ From, To, IQ);
+ [] ->
+ Err = jlib:make_error_reply(
+ Packet, ?ERR_FEATURE_NOT_IMPLEMENTED),
+ ejabberd_router:route(To, From, Err)
+ end,
{false, Attrs, StateData};
%-ifdef(PRIVACY_SUPPORT).
#iq{} ->