Sfoglia il codice sorgente

fix: netdrv,兼容p->tot_len不等于p->len的场景,就是说pbuf并不是单一,而是链表的时候

Wendal Chen 2 mesi fa
parent
commit
bd396e83ac
1 ha cambiato i file con 7 aggiunte e 0 eliminazioni
  1. 7 0
      components/network/netdrv/src/luat_netdrv_napt.c

+ 7 - 0
components/network/netdrv/src/luat_netdrv_napt.c

@@ -206,6 +206,13 @@ int luat_netdrv_napt_pkg_input_pbuf(int id, struct pbuf* p) {
         // LLOGD("其实就是单个pbuf");
         return luat_netdrv_napt_pkg_input(id, p->payload, p->tot_len);
     }
+    uint8_t* tmp = luat_heap_opt_malloc(LUAT_HEAP_PSRAM, p->tot_len);
+    if (tmp) {
+        pbuf_copy_partial(p, tmp, p->tot_len, 0);
+        int ret = luat_netdrv_napt_pkg_input(id, tmp, p->tot_len);
+        luat_heap_free(tmp);
+        return ret;
+    }
     return 0; // lwip继续处理 
 }