Browse Source

Prevent side effects in init of supervisors

juhlig 5 years ago
parent
commit
4b80e31bc4
3 changed files with 10 additions and 3 deletions
  1. 8 1
      src/ranch_acceptors_sup.erl
  2. 2 0
      src/ranch_app.erl
  3. 0 2
      src/ranch_sup.erl

+ 8 - 1
src/ranch_acceptors_sup.erl

@@ -28,7 +28,14 @@ init([Ref, Transport, Logger]) ->
 	TransOpts = ranch_server:get_transport_options(Ref),
 	NumAcceptors = maps:get(num_acceptors, TransOpts, 10),
 	NumListenSockets = maps:get(num_listen_sockets, TransOpts, 1),
-	LSockets = start_listen_sockets(Ref, NumListenSockets, Transport, TransOpts, Logger),
+	LSockets = case get(lsockets) of
+		undefined ->
+			LSockets1 = start_listen_sockets(Ref, NumListenSockets, Transport, TransOpts, Logger),
+			put(lsockets, LSockets1),
+			LSockets1;
+		LSockets1 ->
+			LSockets1
+	end,
 	Procs = [begin
 		LSocketId = (AcceptorId rem NumListenSockets) + 1,
 		{_, LSocket} = lists:keyfind(LSocketId, 1, LSockets),

+ 2 - 0
src/ranch_app.erl

@@ -22,6 +22,8 @@
 -spec start(application:start_type(), term()) -> {ok, pid()} | {error, term()}.
 start(_, _) ->
 	_ = consider_profiling(),
+	ranch_server = ets:new(ranch_server, [
+		ordered_set, public, named_table]),
 	ranch_sup:start_link().
 
 -spec stop(term()) -> ok.

+ 0 - 2
src/ranch_sup.erl

@@ -32,8 +32,6 @@ init([]) ->
 		{ok, Value2} -> Value2;
 		undefined -> 5
 	end,
-	ranch_server = ets:new(ranch_server, [
-		ordered_set, public, named_table]),
 	Procs = [
 		#{id => ranch_server, start => {ranch_server, start_link, []}}
 	],