-module(remove_conn_and_wait_protocol). -behaviour(ranch_protocol). -export([start_link/3]). -export([init/3]). start_link(Ref, _, [{remove, MaybeRemove, Timeout}]) -> Pid = spawn_link(?MODULE, init, [Ref, MaybeRemove, Timeout]), {ok, Pid}. init(Ref, MaybeRemove, Timeout) -> {ok, _} = ranch:handshake(Ref), _ = case MaybeRemove of true -> ranch:remove_connection(Ref); false -> ok; N -> [ranch:remove_connection(Ref) || _ <- lists:seq(1, N)] end, receive after Timeout -> ok end.