From 702fac49fa757f03ad300730ebe423fdc89778a8 Mon Sep 17 00:00:00 2001 From: William Yang Date: Wed, 11 Oct 2023 16:08:30 +0200 Subject: [PATCH] fix: check handle not NULL in quicer:recv with mutex It is just nice to call it to avoid unnecessary return '{error, invalid_parameter}' --- c_src/quicer_stream.c | 6 ++++++ test/quicer_SUITE.erl | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/c_src/quicer_stream.c b/c_src/quicer_stream.c index 41d82505..3d59087f 100644 --- a/c_src/quicer_stream.c +++ b/c_src/quicer_stream.c @@ -736,6 +736,12 @@ recv2(ErlNifEnv *env, __unused_parm__ int argc, const ERL_NIF_TERM argv[]) TP_NIF_3(start, (uintptr_t)s_ctx->Stream, size_req); enif_mutex_lock(s_ctx->lock); + if ( !s_ctx->Stream ) + { + res = ERROR_TUPLE_2(ATOM_CLOSED); + goto Exit; + } + if (ACCEPTOR_RECV_MODE_PASSIVE != s_ctx->owner->active) { res = ERROR_TUPLE_2(ATOM_EINVAL); diff --git a/test/quicer_SUITE.erl b/test/quicer_SUITE.erl index 0070dfb1..9830c0cb 100644 --- a/test/quicer_SUITE.erl +++ b/test/quicer_SUITE.erl @@ -584,7 +584,6 @@ tc_stream_passive_receive_shutdown(Config) -> {ok, <<"pong">>} = quicer:recv(Stm, 0), case quicer:recv(Stm, 0) of {error, peer_send_shutdown} -> ok; - {error, invalid_parameter} -> ok; {error, closed} -> ok end, quicer:close_connection(Conn), @@ -626,7 +625,7 @@ tc_stream_passive_receive_aborted(Config) -> {ok, 5} = quicer:send(Stm, <<"Abort">>), case quicer:recv(Stm, 0) of {error, peer_send_aborted} -> ok; - {error, invalid_parameter} -> ok + {error, closed} -> ok end, quicer:close_connection(Conn), SPid ! done,