aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-07-04 12:33:30 +0200
committerLoïc Hoguin <[email protected]>2018-07-04 12:33:30 +0200
commita767abb47e6d9a0817d37413e1b5c1d338b362d8 (patch)
tree8157fde9eb94bdf8cf0b4b94f252d7104889d917 /src
parent794a816814cbc9a126531829fae5c7e3359179c3 (diff)
downloadranch-a767abb47e6d9a0817d37413e1b5c1d338b362d8.tar.gz
ranch-a767abb47e6d9a0817d37413e1b5c1d338b362d8.tar.bz2
ranch-a767abb47e6d9a0817d37413e1b5c1d338b362d8.zip
Enable TLS upgrades via ranch_ssl:handshake/3
Based on the work done by @juhlig.
Diffstat (limited to 'src')
-rw-r--r--src/ranch_ssl.erl5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/ranch_ssl.erl b/src/ranch_ssl.erl
index e1dd798..f9203e6 100644
--- a/src/ranch_ssl.erl
+++ b/src/ranch_ssl.erl
@@ -135,11 +135,14 @@ accept_ack(CSocket, Timeout) ->
{ok, _} = handshake(CSocket, [], Timeout),
ok.
--spec handshake(ssl:sslsocket(), opts(), timeout()) -> {ok, ssl:sslsocket()}.
+-spec handshake(inet:socket() | ssl:sslsocket(), opts(), timeout())
+ -> {ok, ssl:sslsocket()}.
handshake(CSocket, Opts, Timeout) ->
case ssl:ssl_accept(CSocket, Opts, Timeout) of
ok ->
{ok, CSocket};
+ {ok, NewSocket} ->
+ {ok, NewSocket};
%% Garbage was most likely sent to the socket, don't error out.
{error, {tls_alert, _}} ->
ok = close(CSocket),