diff options
author | Alexey Shchepin <alexey@process-one.net> | 2004-05-08 19:30:38 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2004-05-08 19:30:38 +0000 |
commit | c812a59efce317c85bda0b8420e8b3b788ab864a (patch) | |
tree | 0f938931ad0b049a9ee15ab86b8308ede89efcaa /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.example | 2 | ||||
-rw-r--r-- | src/ejabberd_listener.erl | 31 |
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) -> |