aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-05-16 17:56:45 +0200
committerLoïc Hoguin <[email protected]>2013-05-16 17:56:45 +0200
commit6d1344319a208412afa3d32f98d1b9043ff90eb7 (patch)
tree1bff5ba801a9466fee239689676c46724c697d19
parent2e787fed568eac202d04912422bb2bcf811f9ed1 (diff)
downloadcowboy-6d1344319a208412afa3d32f98d1b9043ff90eb7.tar.gz
cowboy-6d1344319a208412afa3d32f98d1b9043ff90eb7.tar.bz2
cowboy-6d1344319a208412afa3d32f98d1b9043ff90eb7.zip
Add cowboy_protocol:opts() type
Should improve the detection of wrong protocol options.
-rw-r--r--src/cowboy.erl6
-rw-r--r--src/cowboy_protocol.erl18
2 files changed, 20 insertions, 4 deletions
diff --git a/src/cowboy.erl b/src/cowboy.erl
index 375f924..f591333 100644
--- a/src/cowboy.erl
+++ b/src/cowboy.erl
@@ -37,14 +37,16 @@
-export_type([onresponse_fun/0]).
%% @doc Start an HTTP listener.
--spec start_http(any(), non_neg_integer(), any(), any()) -> {ok, pid()}.
+-spec start_http(any(), non_neg_integer(), any(),
+ cowboy_protocol:opts()) -> {ok, pid()}.
start_http(Ref, NbAcceptors, TransOpts, ProtoOpts)
when is_integer(NbAcceptors), NbAcceptors > 0 ->
ranch:start_listener(Ref, NbAcceptors,
ranch_tcp, TransOpts, cowboy_protocol, ProtoOpts).
%% @doc Start an HTTPS listener.
--spec start_https(any(), non_neg_integer(), any(), any()) -> {ok, pid()}.
+-spec start_https(any(), non_neg_integer(), any(),
+ cowboy_protocol:opts()) -> {ok, pid()}.
start_https(Ref, NbAcceptors, TransOpts, ProtoOpts)
when is_integer(NbAcceptors), NbAcceptors > 0 ->
ranch:start_listener(Ref, NbAcceptors,
diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl
index 4874e9a..8a0ff17 100644
--- a/src/cowboy_protocol.erl
+++ b/src/cowboy_protocol.erl
@@ -56,6 +56,20 @@
-export([parse_request/3]).
-export([resume/6]).
+-type opts() :: [{compress, boolean()}
+ | {env, cowboy_middleware:env()}
+ | {max_empty_lines, non_neg_integer()}
+ | {max_header_name_length, non_neg_integer()}
+ | {max_header_value_length, non_neg_integer()}
+ | {max_headers, non_neg_integer()}
+ | {max_keepalive, non_neg_integer()}
+ | {max_request_line_length, non_neg_integer()}
+ | {middlewares, [module()]}
+ | {onrequest, cowboy:onrequest_fun()}
+ | {onresponse, cowboy:onresponse_fun()}
+ | {timeout, timeout()}].
+-export_type([opts/0]).
+
-record(state, {
socket :: inet:socket(),
transport :: module(),
@@ -78,7 +92,7 @@
%% API.
%% @doc Start an HTTP protocol process.
--spec start_link(any(), inet:socket(), module(), any()) -> {ok, pid()}.
+-spec start_link(any(), inet:socket(), module(), opts()) -> {ok, pid()}.
start_link(Ref, Socket, Transport, Opts) ->
Pid = spawn_link(?MODULE, init, [Ref, Socket, Transport, Opts]),
{ok, Pid}.
@@ -94,7 +108,7 @@ get_value(Key, Opts, Default) ->
end.
%% @private
--spec init(any(), inet:socket(), module(), any()) -> ok.
+-spec init(any(), inet:socket(), module(), opts()) -> ok.
init(Ref, Socket, Transport, Opts) ->
Compress = get_value(compress, Opts, false),
MaxEmptyLines = get_value(max_empty_lines, Opts, 5),