Browse Source

Don't pass Ranch-specific options down to transports

Should fix Dialyzer issues. The options are now also
documented in the Ranch module, and there's new ranch:opt(),
ranch_tcp:opt() and ranch_ssl:opt() for use in third party
code.
Loïc Hoguin 9 years ago
parent
commit
d440a2c1d2
7 changed files with 46 additions and 9 deletions
  1. 11 0
      manual/ranch.md
  2. 6 2
      manual/ranch_ssl.md
  3. 6 2
      manual/ranch_tcp.md
  4. 7 0
      src/ranch.erl
  5. 6 1
      src/ranch_acceptors_sup.erl
  6. 5 2
      src/ranch_ssl.erl
  7. 5 2
      src/ranch_tcp.erl

+ 11 - 0
manual/ranch.md

@@ -17,6 +17,17 @@ Types
 > also be removed from this count explicitly by the user
 > code.
 
+### opt() = {ack_timeout, timeout()}
+	| {connection_type, worker | supervisor}
+	| {max_connections, max_conns()}
+	| {shutdown, timeout() | brutal_kill}
+	| {socket, any()}
+
+> Ranch-specific transport options.
+>
+> These options are not passed on to the transports.
+> They are used by Ranch while setting up the listeners.
+
 ### ref() = any()
 
 > Unique name used to refer to a listener.

+ 6 - 2
manual/ranch_ssl.md

@@ -6,7 +6,7 @@ The `ranch_ssl` module implements an SSL Ranch transport.
 Types
 -----
 
-### opts() = [{backlog, non_neg_integer()}
+### opt() = {backlog, non_neg_integer()}
 	| {cacertfile, string()}
 	| {cacerts, [Der::binary()]}
 	| {cert, Der::binary()}
@@ -32,7 +32,7 @@ Types
 	| {send_timeout_close, boolean()}
 	| {verify, ssl:verify_type()}
 	| {verify_fun, {fun(), InitialUserState::term()}},
-	| {versions, [atom()]}].
+	| {versions, [atom()]}
 
 > Listen options.
 >
@@ -40,6 +40,10 @@ Types
 > be set on the socket, but only the options that should be
 > set independently of protocol implementation.
 
+### opts() = [opt()]
+
+> Listen options.
+
 Option descriptions
 -------------------
 

+ 6 - 2
manual/ranch_tcp.md

@@ -11,14 +11,14 @@ the threads stuck indefinitely.
 Types
 -----
 
-### opts() = [{backlog, non_neg_integer()}
+### opt() = {backlog, non_neg_integer()}
 	| {ip, inet:ip_address()}
 	| {linger, {boolean(), non_neg_integer()}}
 	| {nodelay, boolean()}
 	| {port, inet:port_number()}
 	| {raw, non_neg_integer(), non_neg_integer(), non_neg_integer() | binary()}
 	| {send_timeout, timeout()}
-	| {send_timeout_close, boolean()}]
+	| {send_timeout_close, boolean()}
 
 > Listen options.
 >
@@ -26,6 +26,10 @@ Types
 > be set on the socket, but only the options that should be
 > set independently of protocol implementation.
 
+### opts() = [opt()]
+
+> Listen options.
+
 Option descriptions
 -------------------
 

+ 7 - 0
src/ranch.erl

@@ -31,6 +31,13 @@
 -type max_conns() :: non_neg_integer() | infinity.
 -export_type([max_conns/0]).
 
+-type opt() :: {ack_timeout, timeout()}
+	| {connection_type, worker | supervisor}
+	| {max_connections, max_conns()}
+	| {shutdown, timeout() | brutal_kill}
+	| {socket, any()}.
+-export_type([opt/0]).
+
 -type ref() :: any().
 -export_type([ref/0]).
 

+ 6 - 1
src/ranch_acceptors_sup.erl

@@ -27,7 +27,12 @@ init([Ref, NbAcceptors, Transport, TransOpts]) ->
 	ConnsSup = ranch_server:get_connections_sup(Ref),
 	LSocket = case proplists:get_value(socket, TransOpts) of
 		undefined ->
-			{ok, Socket} = Transport:listen(TransOpts),
+			TransOpts2 = proplists:delete(ack_timeout,
+				proplists:delete(connection_type,
+				proplists:delete(max_connections,
+				proplists:delete(shutdown,
+				proplists:delete(socket, TransOpts))))),
+			{ok, Socket} = Transport:listen(TransOpts2),
 			Socket;
 		Socket ->
 			Socket

+ 5 - 2
src/ranch_ssl.erl

@@ -35,7 +35,7 @@
 -export([shutdown/2]).
 -export([close/1]).
 
--type opts() :: [{backlog, non_neg_integer()}
+-type opt() :: {backlog, non_neg_integer()}
 	| {cacertfile, string()}
 	| {cacerts, [Der::binary()]}
 	| {cert, Der::binary()}
@@ -64,7 +64,10 @@
 	| {send_timeout_close, boolean()}
 	| {verify, ssl:verify_type()}
 	| {verify_fun, {fun(), InitialUserState::term()}}
-	| {versions, [atom()]}].
+	| {versions, [atom()]}.
+-export_type([opt/0]).
+
+-type opts() :: [opt()].
 -export_type([opts/0]).
 
 name() -> ssl.

+ 5 - 2
src/ranch_tcp.erl

@@ -35,7 +35,7 @@
 -export([shutdown/2]).
 -export([close/1]).
 
--type opts() :: [{backlog, non_neg_integer()}
+-type opt() :: {backlog, non_neg_integer()}
 	| {ip, inet:ip_address()}
 	| {linger, {boolean(), non_neg_integer()}}
 	| {nodelay, boolean()}
@@ -43,7 +43,10 @@
 	| {raw, non_neg_integer(), non_neg_integer(),
 		non_neg_integer() | binary()}
 	| {send_timeout, timeout()}
-	| {send_timeout_close, boolean()}].
+	| {send_timeout_close, boolean()}.
+-export_type([opt/0]).
+
+-type opts() :: [opt()].
 -export_type([opts/0]).
 
 name() -> tcp.