summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--ejabberd.service.template17
-rw-r--r--include/ejabberd.hrl23
-rw-r--r--include/mod_muc_room.hrl18
-rw-r--r--include/pubsub.hrl2
-rw-r--r--m4/erlang-extra.m417
-rw-r--r--rebar.config.script2
-rw-r--r--src/ejabberd_odbc.erl2
-rw-r--r--src/ejabberd_s2s_in.erl2
-rw-r--r--src/ejabberd_s2s_out.erl2
-rw-r--r--src/eldap.erl4
-rw-r--r--src/jlib.erl3
-rw-r--r--src/mod_irc_connection.erl4
-rw-r--r--src/mod_ping.erl2
-rw-r--r--test/ejabberd_SUITE.erl2
-rw-r--r--vars.config.in1
16 files changed, 83 insertions, 20 deletions
diff --git a/configure.ac b/configure.ac
index 8715c86b..edd65747 100644
--- a/configure.ac
+++ b/configure.ac
@@ -235,6 +235,8 @@ if test "$ENABLEUSER" != ""; then
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
fi
+ERLANG_DEPRECATED_TYPES_CHECK
+
AC_SUBST(hipe)
AC_SUBST(roster_gateway_workaround)
AC_SUBST(transient_supervisors)
diff --git a/ejabberd.service.template b/ejabberd.service.template
new file mode 100644
index 00000000..79c2a644
--- /dev/null
+++ b/ejabberd.service.template
@@ -0,0 +1,17 @@
+[Unit]
+Description=XMPP Server
+After=network.target
+
+[Service]
+User=ejabberd
+Group=ejabberd
+LimitNOFILE=16000
+RestartSec=5
+ExecStart=/bin/sh @ctlscriptpath@/ejabberdctl start
+ExecStop=@ctlscriptpath@/ejabberdctl stop
+ExecReload=@ctlscriptpath@/ejabberdctl reload_config
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/include/ejabberd.hrl b/include/ejabberd.hrl
index 6e21836a..0e5ba1b2 100644
--- a/include/ejabberd.hrl
+++ b/include/ejabberd.hrl
@@ -18,8 +18,9 @@
%%%
%%%----------------------------------------------------------------------
-%% This macro returns a string of the ejabberd version running, e.g. "2.3.4"
-%% If the ejabberd application description isn't loaded, returns atom: undefined
+-ifndef(EJABBERD_HRL).
+-define(EJABBERD_HRL, true).
+
-define(VERSION, ejabberd_config:get_version()).
-define(MYHOSTS, ejabberd_config:get_myhosts()).
@@ -49,3 +50,21 @@
-type scram() :: #scram{}.
-define(SCRAM_DEFAULT_ITERATION_COUNT, 4096).
+
+-ifdef(ERL_DEPRECATED_TYPES).
+
+-define(TDICT, dict()).
+-define(TGB_TREE, gb_tree()).
+-define(TGB_SET, gb_set()).
+-define(TQUEUE, queue()).
+
+-else.
+
+-define(TDICT, dict:dict()).
+-define(TGB_TREE, gb_trees:tree()).
+-define(TGB_SET, gb_set:set()).
+-define(TQUEUE, queue:queue()).
+
+-endif.
+
+-endif.
diff --git a/include/mod_muc_room.hrl b/include/mod_muc_room.hrl
index 9220da41..6f170269 100644
--- a/include/mod_muc_room.hrl
+++ b/include/mod_muc_room.hrl
@@ -18,6 +18,8 @@
%%%
%%%----------------------------------------------------------------------
+-include("ejabberd.hrl").
+
-define(MAX_USERS_DEFAULT, 200).
-define(SETS, gb_sets).
@@ -26,7 +28,7 @@
-record(lqueue,
{
- queue :: queue(),
+ queue :: ?TQUEUE,
len :: integer(),
max :: integer()
}).
@@ -58,8 +60,8 @@
voice_request_min_interval = 1800 :: non_neg_integer(),
max_users = ?MAX_USERS_DEFAULT :: non_neg_integer() | none,
logging = false :: boolean(),
- vcard = <<"">> :: boolean(),
- captcha_whitelist = (?SETS):empty() :: gb_set()
+ vcard = <<"">> :: binary(),
+ captcha_whitelist = (?SETS):empty() :: ?TGB_SET
}).
-type config() :: #config{}.
@@ -92,18 +94,18 @@
access = {none,none,none,none} :: {atom(), atom(), atom(), atom()},
jid = #jid{} :: jid(),
config = #config{} :: config(),
- users = (?DICT):new() :: dict(),
+ users = (?DICT):new() :: ?TDICT,
last_voice_request_time = treap:empty() :: treap:treap(),
- robots = (?DICT):new() :: dict(),
- nicks = (?DICT):new() :: dict(),
- affiliations = (?DICT):new() :: dict(),
+ robots = (?DICT):new() :: ?TDICT,
+ nicks = (?DICT):new() :: ?TDICT,
+ affiliations = (?DICT):new() :: ?TDICT,
history :: lqueue(),
subject = <<"">> :: binary(),
subject_author = <<"">> :: binary(),
just_created = false :: boolean(),
activity = treap:empty() :: treap:treap(),
room_shaper = none :: shaper:shaper(),
- room_queue = queue:new() :: queue()
+ room_queue = queue:new() :: ?TQUEUE
}).
-record(muc_online_users, {us = {<<>>, <<>>} :: {binary(), binary()},
diff --git a/include/pubsub.hrl b/include/pubsub.hrl
index bfbba7c5..3be41e3f 100644
--- a/include/pubsub.hrl
+++ b/include/pubsub.hrl
@@ -23,6 +23,8 @@
%%% This file contains pubsub types definition.
%%% ====================================================================
+-include("ejabberd.hrl").
+
%% -------------------------------
%% Pubsub constants
-define(ERR_EXTENDED(E, C),
diff --git a/m4/erlang-extra.m4 b/m4/erlang-extra.m4
index 4a7311ba..f658057b 100644
--- a/m4/erlang-extra.m4
+++ b/m4/erlang-extra.m4
@@ -84,3 +84,20 @@ EOF
AC_MSG_RESULT([ok])
fi
]) dnl ERLANG_VERSION_CHECK
+
+AC_DEFUN([ERLANG_DEPRECATED_TYPES_CHECK],
+[ AC_MSG_CHECKING([whether Erlang is using deprecated types])
+ cat > conftest.erl <<EOF
+-module(conftest).
+
+-record(state, {host = dict:new() :: dict:dict()}).
+EOF
+
+ if $ERLC conftest.erl > /dev/null 2>&1; then
+ AC_MSG_RESULT([no])
+ AC_SUBST(erlang_deprecated_types, false)
+ else
+ AC_MSG_RESULT([yes])
+ AC_SUBST(erlang_deprecated_types, true)
+ fi
+])
diff --git a/rebar.config.script b/rebar.config.script
index e8f56956..f483899f 100644
--- a/rebar.config.script
+++ b/rebar.config.script
@@ -24,6 +24,8 @@ Macros = lists:flatmap(
[{d, 'mssql'}];
({lager, true}) ->
[{d, 'LAGER'}];
+ ({erlang_deprecated_types, true}) ->
+ [{d, 'ERL_DEPRECATED_TYPES'}];
(_) ->
[]
end, Cfg),
diff --git a/src/ejabberd_odbc.erl b/src/ejabberd_odbc.erl
index 9cf30f53..5828912d 100644
--- a/src/ejabberd_odbc.erl
+++ b/src/ejabberd_odbc.erl
@@ -62,7 +62,7 @@
start_interval = 0 :: non_neg_integer(),
host = <<"">> :: binary(),
max_pending_requests_len :: non_neg_integer(),
- pending_requests = {0, queue:new()} :: {non_neg_integer(), queue()}}).
+ pending_requests = {0, queue:new()} :: {non_neg_integer(), ?TQUEUE}}).
-define(STATE_KEY, ejabberd_odbc_state).
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index 7afac471..1b40f03c 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -58,7 +58,7 @@
server = <<"">> :: binary(),
authenticated = false :: boolean(),
auth_domain = <<"">> :: binary(),
- connections = (?DICT):new() :: dict(),
+ connections = (?DICT):new() :: ?TDICT,
timer = make_ref() :: reference()}).
%-define(DBGFSM, true).
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 3445023e..97164326 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -77,7 +77,7 @@
try_auth = true :: boolean(),
myname = <<"">> :: binary(),
server = <<"">> :: binary(),
- queue = queue:new() :: queue(),
+ queue = queue:new() :: ?TQUEUE,
delay_to_retry = undefined_delay :: undefined_delay | non_neg_integer(),
new = false :: false | binary(),
verify = false :: false | {pid(), binary(), binary()},
diff --git a/src/eldap.erl b/src/eldap.erl
index c07ddc07..5e084b01 100644
--- a/src/eldap.erl
+++ b/src/eldap.erl
@@ -139,8 +139,8 @@
passwd = <<"">> :: binary(),
id = 0 :: non_neg_integer(),
bind_timer = make_ref() :: reference(),
- dict = dict:new() :: dict(),
- req_q = queue:new() :: queue()}).
+ dict = dict:new() :: ?TDICT,
+ req_q = queue:new() :: ?TQUEUE}).
%%%----------------------------------------------------------------------
%%% API
diff --git a/src/jlib.erl b/src/jlib.erl
index 2c0f30b3..76886a7d 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -57,6 +57,7 @@
%% TODO: Remove once XEP-0091 is Obsolete
%% TODO: Remove once XEP-0091 is Obsolete
+-include("ejabberd.hrl").
-include("jlib.hrl").
-export_type([jid/0]).
@@ -972,7 +973,7 @@ i2l(L, N) when is_binary(L) ->
_ -> i2l(<<$0, L/binary>>, N)
end.
--spec queue_drop_while(fun((term()) -> boolean()), queue()) -> queue().
+-spec queue_drop_while(fun((term()) -> boolean()), ?TQUEUE) -> ?TQUEUE.
queue_drop_while(F, Q) ->
case queue:peek(Q) of
diff --git a/src/mod_irc_connection.erl b/src/mod_irc_connection.erl
index c31adf75..2180ebd2 100644
--- a/src/mod_irc_connection.erl
+++ b/src/mod_irc_connection.erl
@@ -51,12 +51,12 @@
encoding = <<"">> :: binary(),
port = 0 :: inet:port_number(),
password = <<"">> :: binary(),
- queue = queue:new() :: queue(),
+ queue = queue:new() :: ?TQUEUE,
user = #jid{} :: jid(),
host = <<"">> :: binary(),
server = <<"">> :: binary(),
nick = <<"">> :: binary(),
- channels = dict:new() :: dict(),
+ channels = dict:new() :: ?TDICT,
nickchannel :: binary(),
mod = mod_irc :: atom(),
inbuf = <<"">> :: binary(),
diff --git a/src/mod_ping.erl b/src/mod_ping.erl
index 87cf6e01..f493dccb 100644
--- a/src/mod_ping.erl
+++ b/src/mod_ping.erl
@@ -63,7 +63,7 @@
send_pings = ?DEFAULT_SEND_PINGS :: boolean(),
ping_interval = ?DEFAULT_PING_INTERVAL :: non_neg_integer(),
timeout_action = none :: none | kill,
- timers = (?DICT):new() :: dict()}).
+ timers = (?DICT):new() :: ?TDICT}).
%%====================================================================
%% API
diff --git a/test/ejabberd_SUITE.erl b/test/ejabberd_SUITE.erl
index 380ed606..a2fa1648 100644
--- a/test/ejabberd_SUITE.erl
+++ b/test/ejabberd_SUITE.erl
@@ -25,7 +25,7 @@
-include("suite.hrl").
suite() ->
- [{timetrap, {seconds,20}}].
+ [{timetrap, {seconds,120}}].
init_per_suite(Config) ->
NewConfig = init_config(Config),
diff --git a/vars.config.in b/vars.config.in
index 7621d139..2efa449a 100644
--- a/vars.config.in
+++ b/vars.config.in
@@ -14,6 +14,7 @@
{db_type, @db_type@}.
{debug, @debug@}.
{hipe, @hipe@}.
+{erlang_deprecated_types, @erlang_deprecated_types@}.
%% Ad-hoc directories with source files
{tools, @tools@}.