aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch_ssl.erl
diff options
context:
space:
mode:
authorAlexey Lebedeff <[email protected]>2016-04-22 17:33:34 +0300
committerLoïc Hoguin <[email protected]>2016-11-15 15:46:54 +0200
commitf33ff7cbacb204adae9d53ad15829f44c4140525 (patch)
treeeb4b031b5e887e4fdc2391cecb3acb6511de735c /src/ranch_ssl.erl
parentdff4ea04dc0e286e8cb43fea0177d3efc249aec5 (diff)
downloadranch-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.erl15
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),