diff options
| author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-11-08 15:15:39 +0300 |
|---|---|---|
| committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-11-08 15:15:39 +0300 |
| commit | 902c6d476bf5fbf9f0e94accbd58b346ec0a1366 (patch) | |
| tree | a40bfc75df80dac2177ede6e98ba21a7ecfd418a /src | |
| parent | ejabberdctl: Fix 'read' syntax for non-bash shells (diff) | |
Prepare version 0.6.1 of XEP-0313 (MAM) support
Diffstat (limited to 'src')
| -rw-r--r-- | src/mod_mam.erl | 20 | ||||
| -rw-r--r-- | src/mod_muc.erl | 2 | ||||
| -rw-r--r-- | src/mod_muc_room.erl | 2 |
3 files changed, 15 insertions, 9 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl index 2593aaefd..270cedf47 100644 --- a/src/mod_mam.erl +++ b/src/mod_mam.erl @@ -24,7 +24,7 @@ %%%------------------------------------------------------------------- -module(mod_mam). --protocol({xep, 313, '0.5.1'}). +-protocol({xep, 313, '0.6.1'}). -protocol({xep, 334, '0.2'}). -behaviour(gen_mod). @@ -218,6 +218,10 @@ register_iq_handlers(Host, IQDisc) -> gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_1, ?MODULE, process_iq_v0_3, IQDisc), gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_1, + ?MODULE, process_iq_v0_3, IQDisc), + gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MAM_2, + ?MODULE, process_iq_v0_3, IQDisc), + gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_MAM_2, ?MODULE, process_iq_v0_3, IQDisc). -spec unregister_iq_handlers(binary()) -> ok. @@ -227,7 +231,9 @@ unregister_iq_handlers(Host) -> gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_MAM_0), gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_0), gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_MAM_1), - gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_1). + gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_1), + gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_MAM_2), + gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_MAM_2). -spec remove_user(binary(), binary()) -> ok. remove_user(User, Server) -> @@ -372,7 +378,7 @@ muc_process_iq(#iq{type = T, lang = Lang, from = From, sub_els = [#mam_query{xmlns = NS}]} = IQ, MUCState) - when (T == set andalso (NS == ?NS_MAM_0 orelse NS == ?NS_MAM_1)) orelse + when (T == set andalso (NS /= ?NS_MAM_TMP)) orelse (T == get andalso NS == ?NS_MAM_TMP) -> case may_enter_room(From, MUCState) of true -> @@ -385,7 +391,7 @@ muc_process_iq(#iq{type = T, lang = Lang, end; muc_process_iq(#iq{type = get, sub_els = [#mam_query{xmlns = NS}]} = IQ, - MUCState) when NS == ?NS_MAM_0; NS == ?NS_MAM_1 -> + MUCState) when NS /= ?NS_MAM_TMP -> LServer = MUCState#state.server_host, process_iq(LServer, IQ); muc_process_iq(IQ, _MUCState) -> @@ -415,7 +421,7 @@ disco_sm_features(empty, From, To, Node, Lang) -> disco_sm_features({result, OtherFeatures}, #jid{luser = U, lserver = S}, #jid{luser = U, lserver = S}, <<"">>, _Lang) -> - {result, [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1 | OtherFeatures]}; + {result, [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1, ?NS_MAM_2 | OtherFeatures]}; disco_sm_features(Acc, _From, _To, _Node, _Lang) -> Acc. @@ -940,13 +946,13 @@ send(Msgs, Count, IsComplete, #mam_fin{xmlns = NS, id = QID, rsm = RSMOut, complete = IsComplete} end, - if NS == ?NS_MAM_TMP; NS == ?NS_MAM_1 -> + if NS /= ?NS_MAM_0 -> lists:foreach( fun(El) -> ejabberd_router:route(El) end, Els), xmpp:make_iq_result(IQ, Result); - NS == ?NS_MAM_0 -> + true -> ejabberd_router:route(xmpp:make_iq_result(IQ)), lists:foreach( fun(El) -> diff --git a/src/mod_muc.erl b/src/mod_muc.erl index c79cff19b..f7d5303fb 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -516,7 +516,7 @@ process_disco_info(#iq{type = get, to = To, lang = Lang, X = ejabberd_hooks:run_fold(disco_info, ServerHost, [], [ServerHost, ?MODULE, <<"">>, Lang]), MAMFeatures = case gen_mod:is_loaded(ServerHost, mod_mam) of - true -> [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1]; + true -> [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1, ?NS_MAM_2]; false -> [] end, RSMFeatures = case RMod:rsm_supported() of diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 7e71c6904..be90d72eb 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -3643,7 +3643,7 @@ process_iq_disco_info(_From, #iq{type = get, lang = Lang}, StateData) -> ++ case {gen_mod:is_loaded(StateData#state.server_host, mod_mam), Config#config.mam} of {true, true} -> - [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1]; + [?NS_MAM_TMP, ?NS_MAM_0, ?NS_MAM_1, ?NS_MAM_2]; _ -> [] end, |
