diff --git a/apps/sdlan/src/quic/sdlan_quic_channel.erl b/apps/sdlan/src/quic/sdlan_quic_channel.erl index f55a520..de630a5 100644 --- a/apps/sdlan/src/quic/sdlan_quic_channel.erl +++ b/apps/sdlan/src/quic/sdlan_quic_channel.erl @@ -213,7 +213,8 @@ handle_event(info, {frame, <>}, registered, rules = <<1, 80:16, 2, 9090:16>> }), quic_send(Stream, <>) - end; + end, + keep_state_and_data; handle_event(info, {frame, <>}, _StateName, State = #state{stream = Stream, ping_counter = PingCounter}) -> quic_send(Stream, <>), @@ -232,7 +233,7 @@ handle_event(info, {timeout, _, ping_ticker}, _, State = #state{client_id = Clie end; %% 发送指令信息 -handle_event(info, {send_event, EventType, Event}, registered, #state{stream = Stream, client_id = ClientId}) -> +handle_event(cast, {send_event, EventType, Event}, registered, #state{stream = Stream, client_id = ClientId}) -> logger:debug("[sdlan_channel] client_id: ~p, will send eventType: ~p, event: ~p", [ClientId, EventType, Event]), quic_send(Stream, <>), keep_state_and_data; @@ -264,7 +265,11 @@ handle_event(info, {quic_closed, Stream, _Props}, _StateName, State = #state{str {stop, connection_closed, State}; handle_event(info, {'EXIT', _, _}, _StateName, State) -> - {stop, connection_closed, State}. + {stop, connection_closed, State}; + +handle_event(EventType, Info, StateName, State) -> + logger:notice("[sdlan_quic_channel] state_name: ~p, event_type: ~p, info: ~p", [StateName, EventType, Info]), + {stop, normal, State}. %% @private %% @doc This function is called by a gen_statem when it is about to @@ -314,4 +319,9 @@ rsa_encode(PlainText, RsaPubKey) when is_binary(PlainText) -> -spec quic_send(Stream :: quicer:stream_handle(), Packet :: binary()) -> no_return(). quic_send(Stream, Packet) when is_binary(Packet) -> Len = byte_size(Packet), - {ok, _} = quicer:send(Stream, <>). + case quicer:send(Stream, <>) of + {ok, _} -> + ok; + {error, Reason} -> + exit({quic_send_failed, Reason}) + end. \ No newline at end of file