diff --git a/src/quicer.erl b/src/quicer.erl index 194b0629..a240c3cb 100644 --- a/src/quicer.erl +++ b/src/quicer.erl @@ -32,8 +32,8 @@ %% Traffic APIs -export([ listen/2 - , stop_listen/1 - , start_listen/3 + , stop_listener/1 + , start_listener/3 , close_listener/1 , close_listener/2 , connect/4 @@ -110,8 +110,8 @@ , open_connection/0 ]). --export([ start_listener/3 %% start application over quic - , stop_listener/1 +-export([ spawn_listener/3 %% start application over quic + , terminate_listener/1 ]). -type connection_opts() :: proplists:proplist() | quicer_connection:opts(). @@ -171,28 +171,17 @@ reg_open(Profile) -> reg_close() -> quicer_nif:reg_close(). --spec start_listener(Appname :: atom() | listener_handle(), listen_on(), - {listener_opts(), - connection_opts(), - stream_opts() | user_opts()} - ) -> +%% @doc Start a stopped listener with listener handle. +-spec start_listener(listener_handle(), listen_on(), listen_opts()) -> {ok, pid()} | {error, any()}. -start_listener(AppName, Port, Options) when is_atom(AppName) -> - quicer_listener:start_listener(AppName, Port, Options). - --spec start_listen(listener_handle(), listen_on(), listen_opts()) -> - {ok, pid()} | {error, any()}. -start_listen(Listener, Port, Options) when is_list(Options)-> - start_listen(Listener, Port, maps:from_list(Options)); -start_listen(Listener, Port, Options) -> +start_listener(Listener, Port, Options) when is_list(Options)-> + start_listener(Listener, Port, maps:from_list(Options)); +start_listener(Listener, Port, Options) -> quicer_nif:start_listener(Listener, Port, Options). --spec stop_listener(atom() | listener_handle()) -> ok. -stop_listener(AppName) when is_atom(AppName)-> - quicer_listener:stop_listener(AppName). - --spec stop_listen(listener_handle()) -> ok. -stop_listen(Handle) -> +%% @doc Stop a started listener which could be closed or restarted later. +-spec stop_listener(listener_handle()) -> ok. +stop_listener(Handle) -> case quicer_nif:stop_listener(Handle) of ok -> receive @@ -204,6 +193,22 @@ stop_listen(Handle) -> {error, Reason} end. + +%% @doc start a listener process under supervisor tree +-spec spawn_listener(Appname :: atom() | listener_handle(), listen_on(), + {listener_opts(), + connection_opts(), + stream_opts() | user_opts()} + ) -> + {ok, pid()} | {error, any()}. +spawn_listener(AppName, Port, Options) when is_atom(AppName) -> + quicer_listener:start_listener(AppName, Port, Options). + +%% @doc terminate a listener process under supervisor tree +-spec terminate_listener(atom() | listener_handle()) -> ok. +terminate_listener(AppName) when is_atom(AppName)-> + quicer_listener:stop_listener(AppName). + %% @doc Start listen on Port or "HOST:PORT". %% %% listener_handle() is used for accepting new connection. diff --git a/test/quicer_SUITE.erl b/test/quicer_SUITE.erl index c6730499..a62c31f0 100644 --- a/test/quicer_SUITE.erl +++ b/test/quicer_SUITE.erl @@ -276,7 +276,7 @@ end_per_testcase(tc_open_listener_neg_1, _Config) -> quicer:open_lib(), quicer:reg_open(); end_per_testcase(_TestCase, _Config) -> - quicer:stop_listener(mqtt), + quicer:terminate_listener(mqtt), Unhandled = quicer_test_lib:receive_all(), Unhandled =/= [] andalso ct:comment("What left in the message queue: ~p", [Unhandled]), ok. @@ -499,14 +499,14 @@ tc_stop_start_listener(Config) -> Port = select_port(), LConf = default_listen_opts(Config), {ok, L} = quicer:listen(Port, LConf), - ok = quicer:stop_listen(L), - ok = quicer:start_listen(L, Port, LConf), + ok = quicer:stop_listener(L), + ok = quicer:start_listener(L, Port, LConf), ok = quicer:close_listener(L). tc_stop_close_listener(Config) -> Port = select_port(), {ok, L} = quicer:listen(Port, default_listen_opts(Config)), - ok = quicer:stop_listen(L), + ok = quicer:stop_listener(L), ok = quicer:close_listener(L, 0). tc_start_listener_alpn_too_long(Config) -> @@ -542,14 +542,14 @@ tc_get_listeners(Config) -> ], Res = lists:map( fun({Alpn, ListenOn}) -> - {ok, L} = quicer:start_listener( + {ok, L} = quicer:spawn_listener( Alpn, ListenOn, {ListenerOpts, ConnectionOpts, StreamOpts}), L end, Listeners), ?assertEqual(lists:reverse(lists:zip(Listeners, Res)), quicer:listeners()), - lists:foreach(fun({L, _}) -> ok = quicer:stop_listener(L) end, Listeners). + lists:foreach(fun({L, _}) -> ok = quicer:terminate_listener(L) end, Listeners). tc_get_listener(Config) -> ListenerOpts = [{conn_acceptors, 32} | default_listen_opts(Config)], @@ -564,7 +564,7 @@ tc_get_listener(Config) -> , {alpn4, "[::1]:24570"} ], lists:map(fun({Alpn, ListenOn}) -> - {ok, L} = quicer:start_listener(Alpn, ListenOn, + {ok, L} = quicer:spawn_listener(Alpn, ListenOn, {ListenerOpts, ConnectionOpts, StreamOpts}), L end, Listeners), @@ -575,7 +575,7 @@ tc_get_listener(Config) -> true = is_process_alive(LPid) end, Listeners), - lists:foreach(fun({L, _}) -> ok = quicer:stop_listener(L) end, Listeners), + lists:foreach(fun({L, _}) -> ok = quicer:terminate_listener(L) end, Listeners), lists:foreach(fun({Name, _} = NameListenON) -> ?assertEqual({error, not_found}, quicer:listener(Name)), @@ -2276,7 +2276,7 @@ tc_app_echo_server(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, false}]), {ok, 4} = quicer:async_send(Stm, <<"ping">>), @@ -2285,10 +2285,10 @@ tc_app_echo_server(Config) -> {ok, <<"pingpingping">>} = quicer:recv(Stm, 12), ok = quicer:close_stream(Stm), ok = quicer:close_connection(Conn), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), %% test that listener could be reopened - {ok, _} = quicer:start_listener(mqtt, Port, Options), - ok = quicer:stop_listener(mqtt), + {ok, _} = quicer:spawn_listener(mqtt, Port, Options), + ok = quicer:terminate_listener(mqtt), ok. tc_strm_opt_active_1(Config) -> @@ -2302,7 +2302,7 @@ tc_strm_opt_active_1(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, 1}]), {ok, 5} = quicer:send(Stm, <<"ping1">>), @@ -2328,7 +2328,7 @@ tc_strm_opt_active_n(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, 3}]), {ok, 5} = quicer:async_send(Stm, <<"ping1">>), @@ -2361,7 +2361,7 @@ tc_strm_opt_active_once(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, once}]), {ok, 5} = quicer:async_send(Stm, <<"ping1">>), @@ -2389,7 +2389,7 @@ tc_strm_opt_active_badarg(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {error, badarg} = quicer:start_stream(Conn, [{active, twice}]). @@ -2404,7 +2404,7 @@ tc_get_conn_rid(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Rid} = quicer:get_conn_rid(Conn), ?assert(is_integer(Rid) andalso Rid =/=0). @@ -2420,7 +2420,7 @@ tc_get_stream_rid(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, 3}]), {ok, Rid} = quicer:get_stream_rid(Stm), @@ -2442,7 +2442,7 @@ tc_stream_open_flag_unidirectional(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [ {active, 3} , {open_flag, ?QUIC_STREAM_OPEN_FLAG_UNIDIRECTIONAL} @@ -2469,7 +2469,7 @@ tc_stream_start_flag_fail_blocked(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [ {active, 3}, {start_flag, ?QUIC_STREAM_START_FLAG_FAIL_BLOCKED} , {quic_event_mask, ?QUICER_STREAM_EVENT_MASK_START_COMPLETE} @@ -2513,7 +2513,7 @@ tc_stream_start_flag_immediate(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [ {active, 3}, {start_flag, ?QUIC_STREAM_START_FLAG_IMMEDIATE} , {quic_event_mask, ?QUICER_STREAM_EVENT_MASK_START_COMPLETE} @@ -2543,7 +2543,7 @@ tc_stream_start_flag_shutdown_on_fail(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [ {active, 3}, {start_flag, ?QUIC_STREAM_START_FLAG_SHUTDOWN_ON_FAIL bor ?QUIC_STREAM_START_FLAG_FAIL_BLOCKED @@ -2592,7 +2592,7 @@ tc_stream_start_flag_indicate_peer_accept_1(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, Stm} = quicer:start_stream(Conn, [ {active, 3}, {start_flag, ?QUIC_STREAM_START_FLAG_INDICATE_PEER_ACCEPT} , {quic_event_mask, ?QUICER_STREAM_EVENT_MASK_START_COMPLETE} @@ -2807,7 +2807,7 @@ tc_conn_opt_sslkeylogfile(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [ {sslkeylogfile, TargetFName} | default_conn_opts() ], @@ -2828,7 +2828,7 @@ tc_insecure_traffic(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{param_conn_disable_1rtt_encryption, true} | default_conn_opts()], 5000), @@ -2857,7 +2857,7 @@ tc_event_start_compl_client(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{param_conn_disable_1rtt_encryption, true} | default_conn_opts()], 5000), @@ -2899,7 +2899,7 @@ tc_event_start_compl_server(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [ {param_conn_disable_1rtt_encryption, true} | default_conn_opts()], 5000), @@ -2948,7 +2948,7 @@ tc_direct_send_over_conn(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:async_connect("localhost", Port, [{param_conn_disable_1rtt_encryption, true} | default_conn_opts()]), @@ -3014,7 +3014,7 @@ tc_direct_send_over_conn_block(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:async_connect("localhost", Port, [{param_conn_disable_1rtt_encryption, true} | default_conn_opts()]), @@ -3071,7 +3071,7 @@ tc_direct_send_over_conn_fail(Config) -> | default_stream_opts() ], Options = {ListenerOpts, ConnectionOpts, StreamOpts}, ct:pal("Listener Options: ~p", [Options]), - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:async_connect("localhost", Port, [{param_conn_disable_1rtt_encryption, true} | default_conn_opts()]), diff --git a/test/quicer_snb_SUITE.erl b/test/quicer_snb_SUITE.erl index 56cdb5de..c4666cbe 100644 --- a/test/quicer_snb_SUITE.erl +++ b/test/quicer_snb_SUITE.erl @@ -145,7 +145,7 @@ init_per_testcase(_TestCase, Config) -> %% @end %%-------------------------------------------------------------------- end_per_testcase(_TestCase, _Config) -> - quicer:stop_listener(mqtt), + quicer:terminate_listener(mqtt), snabbkaffe:cleanup(), Unhandled = quicer_test_lib:receive_all(), Unhandled =/= [] andalso ct:comment("What left in the message queue: ~p", [Unhandled]), @@ -270,7 +270,7 @@ tc_app_echo_server(Config) -> quicer:close_stream(Stm), quicer:close_connection(Conn), - ok = quicer:stop_listener(mqtt). + ok = quicer:terminate_listener(mqtt). tc_slow_conn(Config) -> Port = select_port(), @@ -294,7 +294,7 @@ tc_slow_conn(Config) -> ct:pal("closing conn"), quicer:close_connection(Conn), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -348,7 +348,7 @@ tc_stream_owner_down(Config) -> function := "ClientStreamCallback", mark := ?QUIC_STREAM_EVENT_SHUTDOWN_COMPLETE, tag := "event"}, 1000, 1000)), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -435,7 +435,7 @@ tc_conn_owner_down(Config) -> ?block_until( #{?snk_kind := debug, event := closed, module := quicer_connection}, 1000, 1000)), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), {ok, CRid} = quicer:get_conn_rid(Conn), {CRid, SRid} end, @@ -549,7 +549,7 @@ tc_conn_close_flag_1(Config) -> , mark := ?QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE , tag := "event"}, 1000, 3000), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), {CRid, SRid} end, fun({_CRid, SRid}, Trace) -> @@ -600,7 +600,7 @@ tc_conn_close_flag_2(Config) -> , mark := ?QUIC_CONNECTION_EVENT_SHUTDOWN_COMPLETE , tag := "event"}, 3000, 3000), %% assume idle_timeout_is 5s ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -645,7 +645,7 @@ tc_stream_close_errno(Config) -> , error_code := 1234 }, 1000, 1000), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -752,7 +752,7 @@ tc_conn_idle_close(Config) -> Trace)) end), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), ok. tc_conn_gc(Config) -> @@ -871,7 +871,7 @@ tc_conn_gc(Config) -> ) end), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), ok. @@ -970,7 +970,7 @@ tc_conn_no_gc(Config) -> ?assert(Conn =/= undefined) end), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), ok. tc_conn_no_gc_2(Config) -> @@ -1087,7 +1087,7 @@ tc_conn_no_gc_2(Config) -> } = E <- TraceEvents, Rid == CRid])) end), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), ok. %%% Resume connection with connection opt: `nst' @@ -1135,7 +1135,7 @@ tc_conn_resume_nst(Config) -> {ok, <<"ping3">>} = quicer:recv(Stm2, 5), quicer:shutdown_connection(Conn), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -1208,7 +1208,7 @@ tc_conn_resume_nst_with_stream(Config) -> {ok, <<"ping3">>} = quicer:recv(Stm2, 5), quicer:shutdown_connection(ConnResumed), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -1281,7 +1281,7 @@ tc_conn_resume_nst_async(Config) -> {ok, <<"ping3">>} = quicer:recv(Stm2, 5), ct:pal("stop listener"), quicer:shutdown_connection(ConnResumed), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -1355,7 +1355,7 @@ tc_conn_resume_nst_async_2(Config) -> {ok, <<"ping3">>} = quicer:recv(Stm2, 5), ct:pal("stop listener"), quicer:shutdown_connection(ConnResumed), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -1443,7 +1443,7 @@ tc_conn_resume_nst_with_data(Config) -> ?assertNotEqual(NST2, NST), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt) + ok = quicer:terminate_listener(mqtt) end, fun(Result, Trace) -> ct:pal("Trace is ~p", [Trace]), @@ -1517,7 +1517,7 @@ tc_listener_no_acceptor(Config) -> {error, transport_down, #{status := connection_refused}} = quicer:connect("localhost", Port, default_conn_opts(), 5000), ct:pal("stop listener"), - ok = quicer:stop_listener(mqtt), + ok = quicer:terminate_listener(mqtt), timer:sleep(5000) end, fun(_Result, Trace) -> @@ -1655,7 +1655,7 @@ tc_accept_stream_active_once(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{peer_bidi_stream_count, 10}, {peer_unidi_stream_count, 1} | default_conn_opts()], 5000), @@ -1722,7 +1722,7 @@ tc_accept_stream_active_N(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{peer_bidi_stream_count, 10}, {peer_unidi_stream_count, 1} | default_conn_opts()], 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, true}]), @@ -1814,7 +1814,7 @@ tc_multi_streams(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{peer_bidi_stream_count, 10} | default_conn_opts()], 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, true}]), @@ -1867,7 +1867,7 @@ tc_multi_streams_example_server_1(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{peer_bidi_stream_count, 10}, {peer_unidi_stream_count, 1} | default_conn_opts()], 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, true}]), @@ -1962,7 +1962,7 @@ tc_multi_streams_example_server_2(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), ClientConnOpts = [{quic_event_mask, ?QUICER_CONNECTION_EVENT_MASK_NST} | default_conn_opts()], {ok, ClientConnPid} = example_client_connection:start_link("localhost", Port, {ClientConnOpts, default_stream_opts()}), @@ -2022,7 +2022,7 @@ tc_multi_streams_example_server_3(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), ClientConnOpts = [{quic_event_mask, ?QUICER_CONNECTION_EVENT_MASK_NST} | default_conn_opts()], {ok, ClientConnPid} = example_client_connection:start_link("localhost", Port, {ClientConnOpts, default_stream_opts()}), @@ -2183,7 +2183,7 @@ tc_passive_recv_1(Config) -> ct:pal("Listener Options: ~p", [Options]), ?check_trace(#{timetrap => 10000}, begin - {ok, _QuicApp} = quicer:start_listener(mqtt, Port, Options), + {ok, _QuicApp} = quicer:spawn_listener(mqtt, Port, Options), {ok, Conn} = quicer:connect("localhost", Port, [{peer_bidi_stream_count, 10}, {peer_unidi_stream_count, 1} | default_conn_opts()], 5000), {ok, Stm} = quicer:start_stream(Conn, [{active, true}]), @@ -2256,7 +2256,7 @@ select_port()-> quicer_start_listener(Name, Port, Options)-> quicer_start_listener(Name, Port, Options, 10). quicer_start_listener(Name, Port, Options, N) -> - case quicer:start_listener(mqtt, Port, Options) of + case quicer:spawn_listener(mqtt, Port, Options) of {ok, QuicApp} -> {ok, QuicApp}; {error, listener_start_error, address_in_use} when N > 0 -> %% addr in use, retry....