aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch_conns_sup.erl
diff options
context:
space:
mode:
authorj.uhlig <[email protected]>2018-05-04 16:23:27 +0200
committerLoïc Hoguin <[email protected]>2018-05-16 17:16:56 +0200
commit963f53942f1106771e91a018ac9ad46e3bc6a777 (patch)
tree6f733090ec39b55616b2ccdea266090dbfb8b365 /src/ranch_conns_sup.erl
parent16762abdcffa53834d44e22eb4d26ef699c89fc2 (diff)
downloadranch-963f53942f1106771e91a018ac9ad46e3bc6a777.tar.gz
ranch-963f53942f1106771e91a018ac9ad46e3bc6a777.tar.bz2
ranch-963f53942f1106771e91a018ac9ad46e3bc6a777.zip
Ensure listener restart with changed TransOpts
Diffstat (limited to 'src/ranch_conns_sup.erl')
-rw-r--r--src/ranch_conns_sup.erl24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/ranch_conns_sup.erl b/src/ranch_conns_sup.erl
index 6a2336f..812a6c3 100644
--- a/src/ranch_conns_sup.erl
+++ b/src/ranch_conns_sup.erl
@@ -18,12 +18,12 @@
-module(ranch_conns_sup).
%% API.
--export([start_link/6]).
+-export([start_link/3]).
-export([start_protocol/2]).
-export([active_connections/1]).
%% Supervisor internals.
--export([init/7]).
+-export([init/4]).
-export([system_continue/3]).
-export([system_terminate/4]).
-export([system_code_change/4]).
@@ -45,11 +45,10 @@
%% API.
--spec start_link(ranch:ref(), conn_type(), shutdown(), module(),
- timeout(), module()) -> {ok, pid()}.
-start_link(Ref, ConnType, Shutdown, Transport, AckTimeout, Protocol) ->
+-spec start_link(ranch:ref(), module(), module()) -> {ok, pid()}.
+start_link(Ref, Transport, Protocol) ->
proc_lib:start_link(?MODULE, init,
- [self(), Ref, ConnType, Shutdown, Transport, AckTimeout, Protocol]).
+ [self(), Ref, Transport, Protocol]).
%% We can safely assume we are on the same node as the supervisor.
%%
@@ -94,17 +93,20 @@ active_connections(SupPid) ->
%% Supervisor internals.
--spec init(pid(), ranch:ref(), conn_type(), shutdown(),
- module(), timeout(), module()) -> no_return().
-init(Parent, Ref, ConnType, Shutdown, Transport, AckTimeout, Protocol) ->
+-spec init(pid(), ranch:ref(), module(), module()) -> no_return().
+init(Parent, Ref, Transport, Protocol) ->
process_flag(trap_exit, true),
ok = ranch_server:set_connections_sup(Ref, self()),
MaxConns = ranch_server:get_max_connections(Ref),
- Opts = ranch_server:get_protocol_options(Ref),
+ TransOpts = ranch_server:get_transport_options(Ref),
+ ConnType = proplists:get_value(connection_type, TransOpts, worker),
+ Shutdown = proplists:get_value(shutdown, TransOpts, 5000),
+ AckTimeout = proplists:get_value(ack_timeout, TransOpts, 5000),
+ ProtoOpts = ranch_server:get_protocol_options(Ref),
ok = proc_lib:init_ack(Parent, {ok, self()}),
loop(#state{parent=Parent, ref=Ref, conn_type=ConnType,
shutdown=Shutdown, transport=Transport, protocol=Protocol,
- opts=Opts, ack_timeout=AckTimeout, max_conns=MaxConns}, 0, 0, []).
+ opts=ProtoOpts, ack_timeout=AckTimeout, max_conns=MaxConns}, 0, 0, []).
loop(State=#state{parent=Parent, ref=Ref, conn_type=ConnType,
transport=Transport, protocol=Protocol, opts=Opts,