aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_c2s.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl49
1 files changed, 26 insertions, 23 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 9c02899c7..563a7df35 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -25,6 +25,8 @@
-module(ejabberd_c2s).
+-behaviour(ejabberd_config).
+
-author('alexey@process-one.net').
-protocol({xep, 78, '2.5'}).
@@ -54,23 +56,12 @@
get_subscribed/1,
transform_listen_option/2]).
-%% gen_fsm callbacks
--export([init/1,
- wait_for_stream/2,
- wait_for_auth/2,
- wait_for_feature_request/2,
- wait_for_bind/2,
- wait_for_session/2,
- wait_for_sasl_response/2,
- wait_for_resume/2,
- session_established/2,
- handle_event/3,
- handle_sync_event/4,
- code_change/4,
- handle_info/3,
- terminate/3,
- print_state/1
- ]).
+-export([init/1, wait_for_stream/2, wait_for_auth/2,
+ wait_for_feature_request/2, wait_for_bind/2,
+ wait_for_session/2, wait_for_sasl_response/2,
+ wait_for_resume/2, session_established/2,
+ handle_event/3, handle_sync_event/4, code_change/4,
+ handle_info/3, terminate/3, print_state/1, opt_type/1]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -173,14 +164,14 @@
%% XEP-0198:
-define(IS_STREAM_MGMT_TAG(Name),
- Name == <<"enable">>;
- Name == <<"resume">>;
- Name == <<"a">>;
- Name == <<"r">>).
+ (Name == <<"enable">>) or
+ (Name == <<"resume">>) or
+ (Name == <<"a">>) or
+ (Name == <<"r">>)).
-define(IS_SUPPORTED_MGMT_XMLNS(Xmlns),
- Xmlns == ?NS_STREAM_MGMT_2;
- Xmlns == ?NS_STREAM_MGMT_3).
+ (Xmlns == ?NS_STREAM_MGMT_2) or
+ (Xmlns == ?NS_STREAM_MGMT_3)).
-define(MGMT_FAILED(Condition, Xmlns),
#xmlel{name = <<"failed">>,
@@ -3127,3 +3118,15 @@ pack_string(String, Pack) ->
transform_listen_option(Opt, Opts) ->
[Opt|Opts].
+
+opt_type(domain_certfile) -> fun iolist_to_binary/1;
+opt_type(max_fsm_queue) ->
+ fun (I) when is_integer(I), I > 0 -> I end;
+opt_type(resource_conflict) ->
+ fun (setresource) -> setresource;
+ (closeold) -> closeold;
+ (closenew) -> closenew;
+ (acceptnew) -> acceptnew
+ end;
+opt_type(_) ->
+ [domain_certfile, max_fsm_queue, resource_conflict].