diff options
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r-- | src/ejabberd_sm.erl | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index 9e74177ea..a6c5efa0a 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -16,7 +16,8 @@ unset_presence/2, dirty_get_sessions_list/0, dirty_get_my_sessions_list/0, - register_iq_handler/3]). + register_iq_handler/3, + register_iq_handler/4]). -include_lib("mnemosyne/include/mnemosyne.hrl"). -include("ejabberd.hrl"). @@ -73,6 +74,9 @@ loop() -> {register_iq_handler, XMLNS, Module, Function} -> ets:insert(sm_iqtable, {XMLNS, Module, Function}), loop(); + {register_iq_handler, XMLNS, Module, Function, Opts} -> + ets:insert(sm_iqtable, {XMLNS, Module, Function, Opts}), + loop(); _ -> loop() end. @@ -363,6 +367,9 @@ process_iq(From, To, Packet) -> true -> ok end; + [{_, Module, Function, Opts}] -> + gen_iq_handler:handle(Module, Function, Opts, + From, To, IQ); [] -> Err = jlib:make_error_reply( Packet, "501", "Not Implemented"), @@ -379,3 +386,6 @@ process_iq(From, To, Packet) -> register_iq_handler(XMLNS, Module, Fun) -> ejabberd_sm ! {register_iq_handler, XMLNS, Module, Fun}. +register_iq_handler(XMLNS, Module, Fun, Opts) -> + ejabberd_sm ! {register_iq_handler, XMLNS, Module, Fun, Opts}. + |