diff options
Diffstat (limited to 'src/ranch.erl')
-rw-r--r-- | src/ranch.erl | 18 |
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). |