Browse Source

Add an error message when Transport:listen fails

Should be more user friendly.
Loïc Hoguin 9 years ago
parent
commit
828ca8939b
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/ranch_acceptors_sup.erl

+ 11 - 2
src/ranch_acceptors_sup.erl

@@ -32,8 +32,10 @@ init([Ref, NbAcceptors, Transport, TransOpts]) ->
 				proplists:delete(max_connections,
 				proplists:delete(shutdown,
 				proplists:delete(socket, TransOpts))))),
-			{ok, Socket} = Transport:listen(TransOpts2),
-			Socket;
+			case Transport:listen(TransOpts2) of
+				{ok, Socket} -> Socket;
+				{error, Reason} -> listen_error(Ref, Transport, TransOpts2, Reason)
+			end;
 		Socket ->
 			Socket
 	end,
@@ -45,3 +47,10 @@ init([Ref, NbAcceptors, Transport, TransOpts]) ->
 		]}, permanent, brutal_kill, worker, []}
 			|| N <- lists:seq(1, NbAcceptors)],
 	{ok, {{one_for_one, 10, 10}, Procs}}.
+
+-spec listen_error(any(), module(), any(), atom()) -> no_return().
+listen_error(Ref, Transport, TransOpts2, Reason) ->
+	error_logger:error_msg(
+		"Failed to start Ranch listener ~p in ~p:listen(~p) for reason ~p (~s)~n",
+		[Ref, Transport, TransOpts2, Reason, inet:format_error(Reason)]),
+	exit({listen_error, Ref, Reason}).