aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/cowboy.erl')
-rw-r--r--src/cowboy.erl16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cowboy.erl b/src/cowboy.erl
index af9f1b3..1f0e2a9 100644
--- a/src/cowboy.erl
+++ b/src/cowboy.erl
@@ -17,9 +17,13 @@
-export([start_http/4]).
-export([start_https/4]).
-export([start_spdy/4]).
+-export([start_tls/4]).
-export([stop_listener/1]).
-export([set_env/3]).
+-type opts() :: map().
+-export_type([opts/0]).
+
-type fields() :: [atom()
| {atom(), cowboy_constraints:constraint() | [cowboy_constraints:constraint()]}
| {atom(), cowboy_constraints:constraint() | [cowboy_constraints:constraint()], any()}].
@@ -64,6 +68,18 @@ start_spdy(Ref, NbAcceptors, TransOpts, ProtoOpts)
ranch:start_listener(Ref, NbAcceptors,
ranch_ssl, TransOpts2, cowboy_spdy, ProtoOpts).
+-spec start_tls(ranch:ref(), non_neg_integer(), ranch_ssl:opts(), opts()) -> {ok, pid()} | {error, any()}.
+start_tls(Ref, NbAcceptors, TransOpts0, ProtoOpts)
+ when is_integer(NbAcceptors), NbAcceptors > 0 ->
+ {_, Type} = maps:get(stream_handler, ProtoOpts, {cowboy_stream_h, supervisor}),
+ TransOpts = [
+ {connection_type, Type},
+ {next_protocols_advertised, [<<"h2">>, <<"spdy/3">>, <<"http/1.1">>]},
+ {alpn_preferred_protocols, [<<"h2">>, <<"spdy/3">>, <<"http/1.1">>]}
+ |TransOpts0],
+ ranch:start_listener(Ref, NbAcceptors,
+ ranch_ssl, TransOpts, cowboy_tls, ProtoOpts).
+
-spec stop_listener(ranch:ref()) -> ok | {error, not_found}.
stop_listener(Ref) ->
ranch:stop_listener(Ref).