aboutsummaryrefslogtreecommitdiffstats
path: root/src/ranch.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ranch.erl')
-rw-r--r--src/ranch.erl18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/ranch.erl b/src/ranch.erl
index 0e3541f..94727ea 100644
--- a/src/ranch.erl
+++ b/src/ranch.erl
@@ -291,16 +291,22 @@ set_max_connections(Ref, MaxConnections) ->
get_transport_options(Ref) ->
ranch_server:get_transport_options(Ref).
--spec set_transport_options(ref(), opts()) -> ok | {error, running}.
+-spec set_transport_options(ref(), opts()) -> ok | {error, term()}.
set_transport_options(Ref, TransOpts0) ->
TransOpts = normalize_opts(TransOpts0),
- case get_status(Ref) of
- suspended ->
- ok = ranch_server:set_transport_options(Ref, TransOpts);
- running ->
- {error, running}
+ case validate_transport_opts(TransOpts) of
+ ok ->
+ ok = ranch_server:set_transport_options(Ref, TransOpts),
+ ok = apply_transport_options(Ref, TransOpts);
+ TransOptsError ->
+ TransOptsError
end.
+apply_transport_options(Ref, TransOpts) ->
+ _ = [ConnsSup ! {set_transport_options, TransOpts}
+ || {_, ConnsSup} <- ranch_server:get_connections_sups(Ref)],
+ ok.
+
-spec get_protocol_options(ref()) -> any().
get_protocol_options(Ref) ->
ranch_server:get_protocol_options(Ref).