diff options
author | Jan Uhlig <[email protected]> | 2022-07-19 09:43:36 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2022-10-10 11:57:48 +0200 |
commit | 6a26bb8d91d61ff9755a9844bd2a5f7ca8ada888 (patch) | |
tree | fc25e30b8c5def4b726a260bb254e330033a5f52 /src | |
parent | e4720fc629ac056b1b9ec53a46a7af8aeaa43458 (diff) | |
download | ranch-6a26bb8d91d61ff9755a9844bd2a5f7ca8ada888.tar.gz ranch-6a26bb8d91d61ff9755a9844bd2a5f7ca8ada888.tar.bz2 ranch-6a26bb8d91d61ff9755a9844bd2a5f7ca8ada888.zip |
Fix stopping unknown listeners
Diffstat (limited to 'src')
-rw-r--r-- | src/ranch.erl | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/ranch.erl b/src/ranch.erl index c9cc035..dd16f41 100644 --- a/src/ranch.erl +++ b/src/ranch.erl @@ -193,15 +193,24 @@ start_error(_, Error) -> Error. -spec stop_listener(ref()) -> ok | {error, not_found}. stop_listener(Ref) -> - [_, Transport, _, _, _] = ranch_server:get_listener_start_args(Ref), - TransOpts = get_transport_options(Ref), - case supervisor:terminate_child(ranch_sup, {ranch_listener_sup, Ref}) of - ok -> - _ = supervisor:delete_child(ranch_sup, {ranch_listener_sup, Ref}), - ranch_server:cleanup_listener_opts(Ref), - Transport:cleanup(TransOpts); - {error, Reason} -> - {error, Reason} + try + [_, Transport, _, _, _] = ranch_server:get_listener_start_args(Ref), + TransOpts = get_transport_options(Ref), + {Transport, TransOpts} + of + {Transport, TransOpts} -> + case supervisor:terminate_child(ranch_sup, {ranch_listener_sup, Ref}) of + ok -> + _ = supervisor:delete_child(ranch_sup, {ranch_listener_sup, Ref}), + ranch_server:cleanup_listener_opts(Ref), + Transport:cleanup(TransOpts), + ok; + {error, Reason} -> + {error, Reason} + end + catch + error:badarg -> + {error, not_found} end. -spec suspend_listener(ref()) -> ok | {error, any()}. |