Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2015-12-08 13:25:26 +0300
committerPaweł Chmielowski <pchmielowski@process-one.net>2015-12-08 13:25:26 +0300
commit7a69dab5963b13953c5fb08fdb2b39635c1c8992 (patch)
treeff5576f3077c553c7e6fe14dfa4c3153af8e8fb0
parent5ce0b062ffb804bb81ec4e68bd0f9656a5ce3f3e (diff)
Add ability to disable timeout for ejabberdctl command
-rwxr-xr-xejabberdctl.template3
-rw-r--r--src/ejabberd_ctl.erl67
2 files changed, 37 insertions, 33 deletions
diff --git a/ejabberdctl.template b/ejabberdctl.template
index bd791ceda..5fbcf94ee 100755
--- a/ejabberdctl.template
+++ b/ejabberdctl.template
@@ -48,6 +48,7 @@ while [ $# -ne 0 ] ; do
shift
case $PARAM in
--) break ;;
+ --no-timeout) EJABBERD_NO_TIMEOUT="--no-timeout" ;;
--node) ERLANG_NODE_ARG=$1 ; shift ;;
--config-dir) ETC_DIR="$1" ; shift ;;
--config) EJABBERD_CONFIG_PATH="$1" ; shift ;;
@@ -418,7 +419,7 @@ ctlexec()
-hidden \
-pa $EJABBERD_EBIN_PATH \
$KERNEL_OPTS \
- -s ejabberd_ctl -extra $ERLANG_NODE $COMMAND"
+ -s ejabberd_ctl -extra $ERLANG_NODE $EJABBERD_NO_TIMEOUT $COMMAND"
}
# stop epmd if there is no other running node
diff --git a/src/ejabberd_ctl.erl b/src/ejabberd_ctl.erl
index ec916b32b..b0a1069d9 100644
--- a/src/ejabberd_ctl.erl
+++ b/src/ejabberd_ctl.erl
@@ -63,37 +63,40 @@
%%-----------------------------
start() ->
- case init:get_plain_arguments() of
- [SNode | Args] ->
- SNode1 = case string:tokens(SNode, "@") of
- [_Node, _Server] ->
- SNode;
- _ ->
- case net_kernel:longnames() of
- true ->
- lists:flatten([SNode, "@", inet_db:gethostname(),
- ".", inet_db:res_option(domain)]);
- false ->
- lists:flatten([SNode, "@", inet_db:gethostname()]);
- _ ->
- SNode
- end
- end,
- Node = list_to_atom(SNode1),
- Status = case rpc:call(Node, ?MODULE, process, [Args], 60000) of
- {badrpc, Reason} ->
- print("Failed RPC connection to the node ~p: ~p~n",
- [Node, Reason]),
- %% TODO: show minimal start help
- ?STATUS_BADRPC;
- S ->
- S
- end,
- halt(Status);
- _ ->
- print_usage(),
- halt(?STATUS_USAGE)
- end.
+ [SNode, Timeout, Args] = case init:get_plain_arguments() of
+ [SNode2, "--no-timeout" | Args2] ->
+ [SNode2, infinity, Args2];
+ [SNode3 | Args3] ->
+ [SNode3, 10000, Args3];
+ _ ->
+ print_usage(),
+ halt(?STATUS_USAGE)
+ end,
+ SNode1 = case string:tokens(SNode, "@") of
+ [_Node, _Server] ->
+ SNode;
+ _ ->
+ case net_kernel:longnames() of
+ true ->
+ lists:flatten([SNode, "@", inet_db:gethostname(),
+ ".", inet_db:res_option(domain)]);
+ false ->
+ lists:flatten([SNode, "@", inet_db:gethostname()]);
+ _ ->
+ SNode
+ end
+ end,
+ Node = list_to_atom(SNode1),
+ Status = case rpc:call(Node, ?MODULE, process, [Args], Timeout) of
+ {badrpc, Reason} ->
+ print("Failed RPC connection to the node ~p: ~p~n",
+ [Node, Reason]),
+ %% TODO: show minimal start help
+ ?STATUS_BADRPC;
+ S ->
+ S
+ end,
+ halt(Status).
init() ->
ets:new(ejabberd_ctl_cmds, [named_table, set, public]),
@@ -470,7 +473,7 @@ print_usage(HelpMode, MaxC, ShCode) ->
get_list_ctls(),
print(
- ["Usage: ", ?B("ejabberdctl"), " [--node ", ?U("nodename"), "] [--auth ",
+ ["Usage: ", ?B("ejabberdctl"), " [--no-timeout] [--node ", ?U("nodename"), "] [--auth ",
?U("user"), " ", ?U("host"), " ", ?U("password"), "] ",
?U("command"), " [", ?U("options"), "]\n"
"\n"