diff options
author | Alexey Lebedeff <[email protected]> | 2016-04-22 17:33:34 +0300 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2016-11-15 15:46:54 +0200 |
commit | f33ff7cbacb204adae9d53ad15829f44c4140525 (patch) | |
tree | eb4b031b5e887e4fdc2391cecb3acb6511de735c /src/ranch_ssl.erl | |
parent | dff4ea04dc0e286e8cb43fea0177d3efc249aec5 (diff) | |
download | ranch-f33ff7cbacb204adae9d53ad15829f44c4140525.tar.gz ranch-f33ff7cbacb204adae9d53ad15829f44c4140525.tar.bz2 ranch-f33ff7cbacb204adae9d53ad15829f44c4140525.zip |
Improve error reporting
Simplify some return values, improve error messages for
eaddrinuse and no_cert.
Amended to add tests and simpler code. Also hides the
contents of cert and key transport options, if any.
Diffstat (limited to 'src/ranch_ssl.erl')
-rw-r--r-- | src/ranch_ssl.erl | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/ranch_ssl.erl b/src/ranch_ssl.erl index b3fab51..0385065 100644 --- a/src/ranch_ssl.erl +++ b/src/ranch_ssl.erl @@ -89,10 +89,17 @@ messages() -> {ssl, ssl_closed, ssl_error}. -spec listen(opts()) -> {ok, ssl:sslsocket()} | {error, atom()}. listen(Opts) -> - true = 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), + 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 + true -> + do_listen(Opts); + false -> + {error, no_cert} + end. + +do_listen(Opts) -> Opts2 = ranch:set_option_default(Opts, backlog, 1024), Opts3 = ranch:set_option_default(Opts2, ciphers, unbroken_cipher_suites()), Opts4 = ranch:set_option_default(Opts3, nodelay, true), |