Merge pull request #303 from weiss/no-csi-if-unconfigured
Offer CSI stream feature only if mod_client_state is enabled
This commit is contained in:
commit
415936146b
|
@ -479,10 +479,6 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) ->
|
||||||
false ->
|
false ->
|
||||||
[]
|
[]
|
||||||
end,
|
end,
|
||||||
ClientStateFeature =
|
|
||||||
[#xmlel{name = <<"csi">>,
|
|
||||||
attrs = [{<<"xmlns">>, ?NS_CLIENT_STATE}],
|
|
||||||
children = []}],
|
|
||||||
StreamFeatures = [#xmlel{name = <<"bind">>,
|
StreamFeatures = [#xmlel{name = <<"bind">>,
|
||||||
attrs = [{<<"xmlns">>, ?NS_BIND}],
|
attrs = [{<<"xmlns">>, ?NS_BIND}],
|
||||||
children = []},
|
children = []},
|
||||||
|
@ -492,7 +488,8 @@ wait_for_stream({xmlstreamstart, _Name, Attrs}, StateData) ->
|
||||||
++
|
++
|
||||||
RosterVersioningFeature ++
|
RosterVersioningFeature ++
|
||||||
StreamManagementFeature ++
|
StreamManagementFeature ++
|
||||||
ClientStateFeature ++
|
ejabberd_hooks:run_fold(c2s_post_auth_features,
|
||||||
|
Server, [], [Server]) ++
|
||||||
ejabberd_hooks:run_fold(c2s_stream_features,
|
ejabberd_hooks:run_fold(c2s_stream_features,
|
||||||
Server, [], [Server]),
|
Server, [], [Server]),
|
||||||
send_element(StateData,
|
send_element(StateData,
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
|
|
||||||
-behavior(gen_mod).
|
-behavior(gen_mod).
|
||||||
|
|
||||||
-export([start/2, stop/1, filter_presence/2, filter_chat_states/2]).
|
-export([start/2, stop/1, add_stream_feature/2, filter_presence/2,
|
||||||
|
filter_chat_states/2]).
|
||||||
|
|
||||||
-include("ejabberd.hrl").
|
-include("ejabberd.hrl").
|
||||||
-include("logger.hrl").
|
-include("logger.hrl").
|
||||||
|
@ -39,14 +40,19 @@ start(Host, Opts) ->
|
||||||
fun(true) -> true end, false),
|
fun(true) -> true end, false),
|
||||||
DropChatStates = gen_mod:get_opt(drop_chat_states, Opts,
|
DropChatStates = gen_mod:get_opt(drop_chat_states, Opts,
|
||||||
fun(true) -> true end, false),
|
fun(true) -> true end, false),
|
||||||
if QueuePresence ->
|
if QueuePresence; DropChatStates ->
|
||||||
ejabberd_hooks:add(csi_filter_stanza, Host, ?MODULE,
|
ejabberd_hooks:add(c2s_post_auth_features, Host, ?MODULE,
|
||||||
filter_presence, 50);
|
add_stream_feature, 50),
|
||||||
true -> ok
|
if QueuePresence ->
|
||||||
end,
|
ejabberd_hooks:add(csi_filter_stanza, Host, ?MODULE,
|
||||||
if DropChatStates ->
|
filter_presence, 50);
|
||||||
ejabberd_hooks:add(csi_filter_stanza, Host, ?MODULE,
|
true -> ok
|
||||||
filter_chat_states, 50);
|
end,
|
||||||
|
if DropChatStates ->
|
||||||
|
ejabberd_hooks:add(csi_filter_stanza, Host, ?MODULE,
|
||||||
|
filter_chat_states, 50);
|
||||||
|
true -> ok
|
||||||
|
end;
|
||||||
true -> ok
|
true -> ok
|
||||||
end,
|
end,
|
||||||
ok.
|
ok.
|
||||||
|
@ -56,8 +62,16 @@ stop(Host) ->
|
||||||
filter_presence, 50),
|
filter_presence, 50),
|
||||||
ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
|
ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
|
||||||
filter_chat_states, 50),
|
filter_chat_states, 50),
|
||||||
|
ejabberd_hooks:delete(c2s_post_auth_features, Host, ?MODULE,
|
||||||
|
add_stream_feature, 50),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
add_stream_feature(Features, _Host) ->
|
||||||
|
Feature = #xmlel{name = <<"csi">>,
|
||||||
|
attrs = [{<<"xmlns">>, ?NS_CLIENT_STATE}],
|
||||||
|
children = []},
|
||||||
|
[Feature | Features].
|
||||||
|
|
||||||
filter_presence(_Action, #xmlel{name = <<"presence">>, attrs = Attrs}) ->
|
filter_presence(_Action, #xmlel{name = <<"presence">>, attrs = Attrs}) ->
|
||||||
case xml:get_attr(<<"type">>, Attrs) of
|
case xml:get_attr(<<"type">>, Attrs) of
|
||||||
{value, Type} when Type /= <<"unavailable">> ->
|
{value, Type} when Type /= <<"unavailable">> ->
|
||||||
|
|
Loading…
Reference in New Issue