summaryrefslogtreecommitdiff
path: root/src/mod_client_state.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-05-08 16:45:31 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-05-08 16:45:31 +0200
commit4717d64d7afa3ac1e8a46155dafbfc3211dc2af2 (patch)
treec09949b096146b7de3d8e9687a4dacf4b8be4930 /src/mod_client_state.erl
parentLet client retry HTTP upload on file size mismatch (diff)
mod_client_state: Delete only the configured hooks
Diffstat (limited to '')
-rw-r--r--src/mod_client_state.erl45
1 files changed, 27 insertions, 18 deletions
diff --git a/src/mod_client_state.erl b/src/mod_client_state.erl
index dfbfc028..790e808f 100644
--- a/src/mod_client_state.erl
+++ b/src/mod_client_state.erl
@@ -40,13 +40,11 @@
start(Host, Opts) ->
QueuePresence = gen_mod:get_opt(queue_presence, Opts,
- fun(true) -> true;
- (false) -> false
- end, true),
+ fun(B) when is_boolean(B) -> B end,
+ true),
DropChatStates = gen_mod:get_opt(drop_chat_states, Opts,
- fun(true) -> true;
- (false) -> false
- end, true),
+ fun(B) when is_boolean(B) -> B end,
+ true),
if QueuePresence; DropChatStates ->
ejabberd_hooks:add(c2s_post_auth_features, Host, ?MODULE,
add_stream_feature, 50),
@@ -65,12 +63,27 @@ start(Host, Opts) ->
ok.
stop(Host) ->
- ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
- filter_presence, 50),
- ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
- filter_chat_states, 50),
- ejabberd_hooks:delete(c2s_post_auth_features, Host, ?MODULE,
- add_stream_feature, 50),
+ QueuePresence = gen_mod:get_module_opt(Host, ?MODULE, queue_presence,
+ fun(B) when is_boolean(B) -> B end,
+ true),
+ DropChatStates = gen_mod:get_module_opt(Host, ?MODULE, drop_chat_states,
+ fun(B) when is_boolean(B) -> B end,
+ true),
+ if QueuePresence; DropChatStates ->
+ ejabberd_hooks:delete(c2s_post_auth_features, Host, ?MODULE,
+ add_stream_feature, 50),
+ if QueuePresence ->
+ ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
+ filter_presence, 50);
+ true -> ok
+ end,
+ if DropChatStates ->
+ ejabberd_hooks:delete(csi_filter_stanza, Host, ?MODULE,
+ filter_chat_states, 50);
+ true -> ok
+ end;
+ true -> ok
+ end,
ok.
add_stream_feature(Features, _Host) ->
@@ -102,11 +115,7 @@ filter_chat_states(_Action, #xmlel{name = <<"message">>} = Stanza) ->
filter_chat_states(Action, _Stanza) -> Action.
mod_opt_type(drop_chat_states) ->
- fun (true) -> true;
- (false) -> false
- end;
+ fun(B) when is_boolean(B) -> B end;
mod_opt_type(queue_presence) ->
- fun (true) -> true;
- (false) -> false
- end;
+ fun(B) when is_boolean(B) -> B end;
mod_opt_type(_) -> [drop_chat_states, queue_presence].