diff --git a/src/quicer.erl b/src/quicer.erl index 796948e3..65d84b19 100644 --- a/src/quicer.erl +++ b/src/quicer.erl @@ -78,6 +78,7 @@ , setopt/4 , get_stream_id/1 , getstat/2 + , negotiated_protocol/1 , peername/1 , listeners/0 , listener/1 @@ -817,6 +818,11 @@ getstat(Conn, Cnts) -> {ok, CntRes} end. +%% @doc Returns the protocol negotiated through ALPN or NPN extensions. +-spec negotiated_protocol(Conn::connection_handle()) -> {ok, Protocol::binary()} | {error, Reason::any()}. +negotiated_protocol(Conn) -> + quicer:getopt(Conn, param_tls_negotiated_alpn, quic_tls). + %% @doc Peer name %% mimic {@link ssl:peername/1} -spec peername(connection_handle() | stream_handle()) -> diff --git a/test/quicer_SUITE.erl b/test/quicer_SUITE.erl index 69878815..dd81eff5 100644 --- a/test/quicer_SUITE.erl +++ b/test/quicer_SUITE.erl @@ -1844,6 +1844,7 @@ tc_alpn(Config) -> {ok, Conn} = quicer:connect("localhost", Port, default_conn_opts(), 5000), {ok, {_, _}} = quicer:sockname(Conn), {ok, <<"sample">>} = quicer:getopt(Conn, param_tls_negotiated_alpn, quic_tls), + {ok, <<"sample">>} = quicer:negotiated_protocol(Conn), ok = quicer:close_connection(Conn), SPid ! done after 1000 ->