From a33ee7c29b13e4eb61322bbc71505cae59457de6 Mon Sep 17 00:00:00 2001 From: William Yang Date: Sun, 2 Jul 2023 21:22:45 +0200 Subject: [PATCH] feat(api): quicer:negotiated_protocol/1 --- src/quicer.erl | 6 ++++++ test/quicer_SUITE.erl | 1 + 2 files changed, 7 insertions(+) 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 ->