diff --git a/c_src/quicer_stream.c b/c_src/quicer_stream.c index 2229c3b7..3bc1029e 100644 --- a/c_src/quicer_stream.c +++ b/c_src/quicer_stream.c @@ -1061,7 +1061,7 @@ handle_stream_event_start_complete(QuicerStreamCTX *s_ctx, props_name, props_value, 3); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); } return QUIC_STATUS_SUCCESS; } @@ -1080,7 +1080,7 @@ handle_stream_event_peer_send_shutdown( enif_make_copy(env, s_ctx->eHandle), ATOM_UNDEFINED); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); return QUIC_STATUS_SUCCESS; } @@ -1101,7 +1101,7 @@ handle_stream_event_peer_send_aborted(QuicerStreamCTX *s_ctx, enif_make_copy(env, s_ctx->eHandle), enif_make_uint64(env, Event->PEER_SEND_ABORTED.ErrorCode)); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); return QUIC_STATUS_SUCCESS; } @@ -1121,7 +1121,7 @@ handle_stream_event_peer_receive_aborted(QuicerStreamCTX *s_ctx, ATOM_PEER_RECEIVE_ABORTED, enif_make_copy(env, s_ctx->eHandle), enif_make_uint64(env, Event->PEER_RECEIVE_ABORTED.ErrorCode)); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); return QUIC_STATUS_SUCCESS; } @@ -1154,7 +1154,7 @@ handle_stream_event_shutdown_complete(QuicerStreamCTX *s_ctx, props_name, props_value, 6); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); return QUIC_STATUS_SUCCESS; } @@ -1171,7 +1171,7 @@ handle_stream_event_peer_accepted(QuicerStreamCTX *s_ctx, ATOM_PEER_ACCEPTED, enif_make_copy(env, s_ctx->eHandle), ATOM_UNDEFINED); - enif_send(NULL, &(s_ctx->owner->Pid), NULL, report); + signal_or_buffer(NULL, &(s_ctx->owner->Pid), report); return QUIC_STATUS_SUCCESS; } @@ -1282,7 +1282,7 @@ signal_or_buffer(QuicerStreamCTX *s_ctx, ErlNifPid *owner_pid, ERL_NIF_TERM msg) { - if (s_ctx->sig_queue != NULL) + if (s_ctx && s_ctx->sig_queue != NULL) { // Ongoing handoff... buffering CXPLAT_FRE_ASSERT(ACCEPTOR_RECV_MODE_PASSIVE == s_ctx->owner->active); ErlNifEnv *q_env = s_ctx->sig_queue->env;