diff --git a/apps/emqx/include/emqx_mqtt.hrl b/apps/emqx/include/emqx_mqtt.hrl index 6c546c789..537e5a85a 100644 --- a/apps/emqx/include/emqx_mqtt.hrl +++ b/apps/emqx/include/emqx_mqtt.hrl @@ -662,9 +662,9 @@ end). end ). --define(FRAME_PARSE_ERROR(Reason), {frame_parse_error, Reason}). --define(FRAME_SERIALIZE_ERROR(Reason), {frame_serialize_error, Reason}). --define(THROW_FRAME_ERROR(Reason), erlang:throw(?FRAME_PARSE_ERROR(Reason))). --define(THROW_SERIALIZE_ERROR(Reason), erlang:throw(?FRAME_SERIALIZE_ERROR(Reason))). +-define(FRAME_PARSE_ERROR, frame_parse_error). +-define(FRAME_SERIALIZE_ERROR, frame_serialize_error). +-define(THROW_FRAME_ERROR(Reason), erlang:throw({?FRAME_PARSE_ERROR, Reason})). +-define(THROW_SERIALIZE_ERROR(Reason), erlang:throw({?FRAME_SERIALIZE_ERROR, Reason})). -endif. diff --git a/apps/emqx/src/emqx_connection.erl b/apps/emqx/src/emqx_connection.erl index 7d11d07aa..4d0141dd5 100644 --- a/apps/emqx/src/emqx_connection.erl +++ b/apps/emqx/src/emqx_connection.erl @@ -765,7 +765,7 @@ parse_incoming(Data, Packets, State = #state{parse_state = ParseState}) -> NState = State#state{parse_state = NParseState}, parse_incoming(Rest, [Packet | Packets], NState) catch - throw:?FRAME_PARSE_ERROR(Reason) -> + throw:{?FRAME_PARSE_ERROR, Reason} -> ?SLOG(info, #{ reason => Reason, at_state => emqx_frame:describe_state(ParseState), @@ -840,19 +840,19 @@ serialize_and_inc_stats_fun(#state{serialize = Serialize}) -> Data catch %% Maybe Never happen. - throw:?FRAME_SERIALIZE_ERROR(Reason) -> + throw:{?FRAME_SERIALIZE_ERROR, Reason} -> ?SLOG(info, #{ reason => Reason, input_packet => Packet }), - erlang:error(?FRAME_SERIALIZE_ERROR(Reason)); + erlang:error({?FRAME_SERIALIZE_ERROR, Reason}); error:Reason:Stacktrace -> ?SLOG(error, #{ input_packet => Packet, exception => Reason, stacktrace => Stacktrace }), - erlang:error(frame_serialize_error) + erlang:error(?FRAME_SERIALIZE_ERROR) end end. diff --git a/apps/emqx/src/emqx_ws_connection.erl b/apps/emqx/src/emqx_ws_connection.erl index 47519bb45..37bd8fdcf 100644 --- a/apps/emqx/src/emqx_ws_connection.erl +++ b/apps/emqx/src/emqx_ws_connection.erl @@ -676,7 +676,7 @@ parse_incoming(Data, Packets, State = #state{parse_state = ParseState}) -> NState = State#state{parse_state = NParseState}, parse_incoming(Rest, [{incoming, Packet} | Packets], NState) catch - throw:?FRAME_PARSE_ERROR(Reason) -> + throw:{?FRAME_PARSE_ERROR, Reason} -> ?SLOG(info, #{ reason => Reason, at_state => emqx_frame:describe_state(ParseState), @@ -791,19 +791,19 @@ serialize_and_inc_stats_fun(#state{serialize = Serialize}) -> Data catch %% Maybe Never happen. - throw:?FRAME_SERIALIZE_ERROR(Reason) -> + throw:{?FRAME_SERIALIZE_ERROR, Reason} -> ?SLOG(info, #{ reason => Reason, input_packet => Packet }), - erlang:error(?FRAME_SERIALIZE_ERROR(Reason)); + erlang:error({?FRAME_SERIALIZE_ERROR, Reason}); error:Reason:Stacktrace -> ?SLOG(error, #{ input_packet => Packet, exception => Reason, stacktrace => Stacktrace }), - erlang:error(frame_serialize_error) + erlang:error(?FRAME_SERIALIZE_ERROR) end end. diff --git a/apps/emqx/test/emqx_frame_SUITE.erl b/apps/emqx/test/emqx_frame_SUITE.erl index 488cf89f6..99f815abf 100644 --- a/apps/emqx/test/emqx_frame_SUITE.erl +++ b/apps/emqx/test/emqx_frame_SUITE.erl @@ -24,7 +24,7 @@ -include_lib("common_test/include/ct.hrl"). -define(ASSERT_FRAME_THROW(Reason, Expr), - ?assertThrow(?FRAME_PARSE_ERROR(Reason), Expr) + ?assertThrow({?FRAME_PARSE_ERROR, Reason}, Expr) ). all() ->