diff options
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 14 |
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{} -> |