summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2008-11-06 15:36:49 +0000
committerBadlop <badlop@process-one.net>2008-11-06 15:36:49 +0000
commit02d68146bd01f9b974d7fa55fafd48f3f20fca94 (patch)
tree8402a49fa49d20fb2d6634dfd1fd5211f2139ae5 /src
parent* src/ejabberd_c2s.erl: Disable zlib when STARTTLS is required (diff)
* src/extauth.erl: When the extauth call fails or timeouts, deny
authorization. Use two timeouts: 60s for script initialization and 10s for regular calls. (thanks to Kevin Crosbie from Ravenpack) (EJAB-627) SVN Revision: 1673
Diffstat (limited to '')
-rw-r--r--src/extauth.erl21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/extauth.erl b/src/extauth.erl
index c4acb305..99fc1fae 100644
--- a/src/extauth.erl
+++ b/src/extauth.erl
@@ -32,7 +32,8 @@
-include("ejabberd.hrl").
--define(CALL_TIMEOUT, 30000). % Timeout is in milliseconds: 30 seconds == 30000
+-define(INIT_TIMEOUT, 60000). % Timeout is in milliseconds: 60 seconds == 60000
+-define(CALL_TIMEOUT, 10000). % Timeout is in milliseconds: 10 seconds == 10000
start(Host, ExtPrg) ->
spawn(?MODULE, init, [Host, ExtPrg]).
@@ -41,7 +42,7 @@ init(Host, ExtPrg) ->
register(gen_mod:get_module_proc(Host, eauth), self()),
process_flag(trap_exit,true),
Port = open_port({spawn, ExtPrg}, [{packet,2}]),
- loop(Port).
+ loop(Port, ?INIT_TIMEOUT).
stop(Host) ->
gen_mod:get_module_proc(Host, eauth) ! stop.
@@ -63,21 +64,23 @@ call_port(Server, Msg) ->
Result
end.
-loop(Port) ->
+loop(Port, Timeout) ->
receive
{call, Caller, Msg} ->
Port ! {self(), {command, encode(Msg)}},
receive
{Port, {data, Data}} ->
?DEBUG("extauth call '~p' received data response:~n~p", [Msg, Data]),
- Caller ! {eauth, decode(Data)};
- {Port, Other} ->
- ?ERROR_MSG("extauth call '~p' received strange response:~n~p", [Msg, Other])
+ Caller ! {eauth, decode(Data)};
+ {Port, Other} ->
+ ?ERROR_MSG("extauth call '~p' received strange response:~n~p", [Msg, Other]),
+ Caller ! {eauth, false}
after
- ?CALL_TIMEOUT ->
- ?ERROR_MSG("extauth call '~p' didn't receive response~n", [Msg])
+ Timeout ->
+ ?ERROR_MSG("extauth call '~p' didn't receive response", [Msg]),
+ Caller ! {eauth, false}
end,
- loop(Port);
+ loop(Port, ?CALL_TIMEOUT);
stop ->
Port ! {self(), close},
receive