From d6528886cca1a82e67afa3d6ea6d2e26027e6187 Mon Sep 17 00:00:00 2001 From: Frank Feng Date: Thu, 7 Apr 2016 14:33:39 +0800 Subject: [PATCH] matches for the remaining length field in the variable header --- src/emqttd_parser.erl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/emqttd_parser.erl b/src/emqttd_parser.erl index f388649eb..5a6f22a41 100644 --- a/src/emqttd_parser.erl +++ b/src/emqttd_parser.erl @@ -61,6 +61,10 @@ parse_remaining_len(_Bin, _Header, _Multiplier, Length, #mqtt_packet_limit{max_p {error, invalid_mqtt_frame_len}; parse_remaining_len(<<>>, Header, Multiplier, Length, Limit) -> {more, fun(Bin) -> parse_remaining_len(Bin, Header, Multiplier, Length, Limit) end}; +parse_remaining_len(<<0:1, 2:7, Rest/binary>>, Header, 1, 0, _Limit) -> + parse_frame(Rest, Header, 2); +parse_remaining_len(<<0:8, Rest/binary>>, Header, 1, 0, _Limit) -> + parse_frame(Rest, Header, 0); parse_remaining_len(<<1:1, Len:7, Rest/binary>>, Header, Multiplier, Value, Limit) -> parse_remaining_len(Rest, Header, Multiplier * ?HIGHBIT, Value + Len * Multiplier, Limit); parse_remaining_len(<<0:1, Len:7, Rest/binary>>, Header, Multiplier, Value, #mqtt_packet_limit{max_packet_size = MaxLen}) ->