fix(emqx_packet): list element index out of range
This commit is contained in:
parent
0f30bdadbb
commit
bf4baf708a
|
@ -96,23 +96,6 @@
|
||||||
-define(DISCONNECT, 14). %% Client or Server is disconnecting
|
-define(DISCONNECT, 14). %% Client or Server is disconnecting
|
||||||
-define(AUTH, 15). %% Authentication exchange
|
-define(AUTH, 15). %% Authentication exchange
|
||||||
|
|
||||||
-define(TYPE_NAMES, [
|
|
||||||
'CONNECT',
|
|
||||||
'CONNACK',
|
|
||||||
'PUBLISH',
|
|
||||||
'PUBACK',
|
|
||||||
'PUBREC',
|
|
||||||
'PUBREL',
|
|
||||||
'PUBCOMP',
|
|
||||||
'SUBSCRIBE',
|
|
||||||
'SUBACK',
|
|
||||||
'UNSUBSCRIBE',
|
|
||||||
'UNSUBACK',
|
|
||||||
'PINGREQ',
|
|
||||||
'PINGRESP',
|
|
||||||
'DISCONNECT',
|
|
||||||
'AUTH']).
|
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% MQTT V3.1.1 Connect Return Codes
|
%% MQTT V3.1.1 Connect Return Codes
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
|
@ -46,6 +46,24 @@
|
||||||
|
|
||||||
-export([format/1]).
|
-export([format/1]).
|
||||||
|
|
||||||
|
-define(TYPE_NAMES,
|
||||||
|
{ 'CONNECT'
|
||||||
|
, 'CONNACK'
|
||||||
|
, 'PUBLISH'
|
||||||
|
, 'PUBACK'
|
||||||
|
, 'PUBREC'
|
||||||
|
, 'PUBREL'
|
||||||
|
, 'PUBCOMP'
|
||||||
|
, 'SUBSCRIBE'
|
||||||
|
, 'SUBACK'
|
||||||
|
, 'UNSUBSCRIBE'
|
||||||
|
, 'UNSUBACK'
|
||||||
|
, 'PINGREQ'
|
||||||
|
, 'PINGRESP'
|
||||||
|
, 'DISCONNECT'
|
||||||
|
, 'AUTH'
|
||||||
|
}).
|
||||||
|
|
||||||
-type(connect() :: #mqtt_packet_connect{}).
|
-type(connect() :: #mqtt_packet_connect{}).
|
||||||
-type(publish() :: #mqtt_packet_publish{}).
|
-type(publish() :: #mqtt_packet_publish{}).
|
||||||
-type(subscribe() :: #mqtt_packet_subscribe{}).
|
-type(subscribe() :: #mqtt_packet_subscribe{}).
|
||||||
|
@ -61,9 +79,13 @@ type(#mqtt_packet{header = #mqtt_packet_header{type = Type}}) ->
|
||||||
Type.
|
Type.
|
||||||
|
|
||||||
%% @doc Name of MQTT packet type.
|
%% @doc Name of MQTT packet type.
|
||||||
-spec(type_name(emqx_types:packet()) -> atom()).
|
-spec(type_name(emqx_types:packet() | non_neg_integer()) -> atom() | string()).
|
||||||
type_name(Packet) when is_record(Packet, mqtt_packet) ->
|
type_name(#mqtt_packet{} = Packet) ->
|
||||||
lists:nth(type(Packet), ?TYPE_NAMES).
|
type_name(type(Packet));
|
||||||
|
type_name(0) -> 'FORBIDDEN';
|
||||||
|
type_name(Type) when Type > 0 andalso Type =< tuple_size(?TYPE_NAMES) ->
|
||||||
|
element(Type, ?TYPE_NAMES);
|
||||||
|
type_name(Type) -> "UNKNOWN("++ integer_to_list(Type) ++")".
|
||||||
|
|
||||||
%% @doc Dup flag of MQTT packet.
|
%% @doc Dup flag of MQTT packet.
|
||||||
-spec(dup(emqx_types:packet()) -> boolean()).
|
-spec(dup(emqx_types:packet()) -> boolean()).
|
||||||
|
@ -417,12 +439,11 @@ format_header(#mqtt_packet_header{type = Type,
|
||||||
dup = Dup,
|
dup = Dup,
|
||||||
qos = QoS,
|
qos = QoS,
|
||||||
retain = Retain}, S) ->
|
retain = Retain}, S) ->
|
||||||
S1 = if
|
S1 = case S == undefined of
|
||||||
S == undefined -> <<>>;
|
true -> <<>>;
|
||||||
true -> [", ", S]
|
false -> [", ", S]
|
||||||
end,
|
end,
|
||||||
io_lib:format("~s(Q~p, R~p, D~p~s)",
|
io_lib:format("~s(Q~p, R~p, D~p~s)", [type_name(Type), QoS, i(Retain), i(Dup), S1]).
|
||||||
[lists:nth(Type, ?TYPE_NAMES), QoS, i(Retain), i(Dup), S1]).
|
|
||||||
|
|
||||||
format_variable(undefined, _) ->
|
format_variable(undefined, _) ->
|
||||||
undefined;
|
undefined;
|
||||||
|
|
Loading…
Reference in New Issue