aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-05-08 19:30:38 +0000
committerAlexey Shchepin <alexey@process-one.net>2004-05-08 19:30:38 +0000
commitc812a59efce317c85bda0b8420e8b3b788ab864a (patch)
tree0f938931ad0b049a9ee15ab86b8308ede89efcaa /src
parent* src/web/ejabberd_web_admin.erl: Updated (thanks to Andrey (diff)
* doc/guide.tex: Updated
* src/ejabberd_listener.erl: Now possible to specify interface on which one socket will be listened, also added another way to specify SSL options * src/ejabberd.cfg.example: Updated SVN Revision: 231
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd.cfg.example2
-rw-r--r--src/ejabberd_listener.erl31
2 files changed, 29 insertions, 4 deletions
diff --git a/src/ejabberd.cfg.example b/src/ejabberd.cfg.example
index d9bc3b53d..0db4e011c 100644
--- a/src/ejabberd.cfg.example
+++ b/src/ejabberd.cfg.example
@@ -87,7 +87,7 @@
{listen, [{5222, ejabberd_c2s, [{access, c2s},
{shaper, c2s_shaper}]},
{5223, ejabberd_c2s, [{access, c2s},
- {ssl, [{certfile, "./ssl.pem"}]}]},
+ ssl, {certfile, "./ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
{8888, ejabberd_service, [%{access, local},
{hosts,
diff --git a/src/ejabberd_listener.erl b/src/ejabberd_listener.erl
index 7285a22b0..ad1a0f328 100644
--- a/src/ejabberd_listener.erl
+++ b/src/ejabberd_listener.erl
@@ -45,15 +45,28 @@ start(Port, Module, Opts) ->
{ok, proc_lib:spawn_link(?MODULE, init_ssl,
[Port, Module, Opts, SSLOpts])};
_ ->
- {ok, proc_lib:spawn_link(?MODULE, init, [Port, Module, Opts])}
+ case lists:member(ssl, Opts) of
+ true ->
+ {ok, proc_lib:spawn_link(?MODULE, init_ssl,
+ [Port, Module, Opts, []])};
+ false ->
+ {ok, proc_lib:spawn_link(?MODULE, init,
+ [Port, Module, Opts])}
+ end
end.
init(Port, Module, Opts) ->
+ SockOpts = lists:filter(fun({ip, _}) -> true;
+ (inet6) -> true;
+ (inet) -> true;
+ (_) -> false
+ end, Opts),
{ok, ListenSocket} = gen_tcp:listen(Port, [binary,
{packet, 0},
{active, false},
{reuseaddr, true},
- {nodelay, true}]),
+ {nodelay, true} |
+ SockOpts]),
accept(ListenSocket, Module, Opts).
accept(ListenSocket, Module, Opts) ->
@@ -77,11 +90,23 @@ accept(ListenSocket, Module, Opts) ->
init_ssl(Port, Module, Opts, SSLOpts) ->
+ SockOpts = lists:filter(fun({ip, _}) -> true;
+ (inet6) -> true;
+ (inet) -> true;
+ ({verify, _}) -> true;
+ ({depth, _}) -> true;
+ ({certfile, _}) -> true;
+ ({keyfile, _}) -> true;
+ ({password, _}) -> true;
+ ({cacertfile, _}) -> true;
+ ({ciphers, _}) -> true;
+ (_) -> false
+ end, Opts),
{ok, ListenSocket} = ssl:listen(Port, [binary,
{packet, 0},
{active, false},
{nodelay, true} |
- SSLOpts]),
+ SockOpts ++ SSLOpts]),
accept_ssl(ListenSocket, Module, Opts).
accept_ssl(ListenSocket, Module, Opts) ->