diff options
Diffstat (limited to 'src/ranch_ssl.erl')
-rw-r--r-- | src/ranch_ssl.erl | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/ranch_ssl.erl b/src/ranch_ssl.erl index bcbe909..cf876fe 100644 --- a/src/ranch_ssl.erl +++ b/src/ranch_ssl.erl @@ -98,28 +98,30 @@ secure() -> messages() -> {ssl, ssl_closed, ssl_error, ssl_passive}. --spec listen(opts()) -> {ok, ssl:sslsocket()} | {error, atom()}. -listen(Opts) -> - case lists:keymember(cert, 1, Opts) - orelse lists:keymember(certfile, 1, Opts) - orelse lists:keymember(sni_fun, 1, Opts) - orelse lists:keymember(sni_hosts, 1, Opts) of +-spec listen(ranch:transport_opts(opts())) -> {ok, ssl:sslsocket()} | {error, atom()}. +listen(TransOpts) -> + SocketOpts = maps:get(socket_opts, TransOpts, []), + case lists:keymember(cert, 1, SocketOpts) + orelse lists:keymember(certfile, 1, SocketOpts) + orelse lists:keymember(sni_fun, 1, SocketOpts) + orelse lists:keymember(sni_hosts, 1, SocketOpts) of true -> - do_listen(Opts); + Logger = maps:get(logger, TransOpts, logger), + do_listen(SocketOpts, Logger); false -> {error, no_cert} end. -do_listen(Opts0) -> - Opts1 = ranch:set_option_default(Opts0, backlog, 1024), - Opts2 = ranch:set_option_default(Opts1, nodelay, true), - Opts3 = ranch:set_option_default(Opts2, send_timeout, 30000), - Opts = ranch:set_option_default(Opts3, send_timeout_close, true), +do_listen(SocketOpts0, Logger) -> + SocketOpts1 = ranch:set_option_default(SocketOpts0, backlog, 1024), + SocketOpts2 = ranch:set_option_default(SocketOpts1, nodelay, true), + SocketOpts3 = ranch:set_option_default(SocketOpts2, send_timeout, 30000), + SocketOpts = ranch:set_option_default(SocketOpts3, send_timeout_close, true), %% We set the port to 0 because it is given in the Opts directly. %% The port in the options takes precedence over the one in the %% first argument. - ssl:listen(0, ranch:filter_options(Opts, disallowed_listen_options(), - [binary, {active, false}, {packet, raw}, {reuseaddr, true}])). + ssl:listen(0, ranch:filter_options(SocketOpts, disallowed_listen_options(), + [binary, {active, false}, {packet, raw}, {reuseaddr, true}], Logger)). %% 'binary' and 'list' are disallowed but they are handled %% specifically as they do not have 2-tuple equivalents. |