Просмотр исходного кода

fix: mqtt2.lua在处理不完整的数据包时会报错

Wendal Chen 5 лет назад
Родитель
Сommit
a396e9847a
2 измененных файлов с 4 добавлено и 4 удалено
  1. 2 2
      bsp/air302/lib/mqtt2.lua
  2. 2 2
      bsp/air640w/lib/mqtt2.lua

+ 2 - 2
bsp/air302/lib/mqtt2.lua

@@ -203,14 +203,14 @@ function mqttc:run()
                 mc.buff = mc.buff .. data
                 while 1 do
                     local packet, nextpos = unpack(mc.buff)
-                    mc.buff = mc.buff:sub(nextpos)
                     if not packet then
-                        if packet > 4096 then
+                        if #mc.buff > 4096 then
                             log.warn("mqtt", "packet is too big!!!")
                             netc:close()
                         end
                         break
                     else
+                        mc.buff = mc.buff:sub(nextpos)
                         --mclog("mqtt", "recv new pkg", json.encode(packet))
                         table.insert( mc.inpkgs, packet)
                         if #mc.buff < 2 then

+ 2 - 2
bsp/air640w/lib/mqtt2.lua

@@ -203,14 +203,14 @@ function mqttc:run()
                 mc.buff = mc.buff .. data
                 while 1 do
                     local packet, nextpos = unpack(mc.buff)
-                    mc.buff = mc.buff:sub(nextpos)
                     if not packet then
-                        if packet > 4096 then
+                        if #mc.buff > 4096 then
                             log.warn("mqtt", "packet is too big!!!")
                             netc:close()
                         end
                         break
                     else
+                        mc.buff = mc.buff:sub(nextpos)
                         --mclog("mqtt", "recv new pkg", json.encode(packet))
                         table.insert( mc.inpkgs, packet)
                         if #mc.buff < 2 then