野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19681|回复: 1

火哥,来看看你移植的lwip有一句话搞不明白。

[复制链接]
发表于 2016-9-29 11:06:04 | 显示全部楼层 |阅读模式
1火花
源码中有对于空消息的处理,为何此处不发送空消息。
sys_arch.c下的sys_mbox_trypost函数中
  1. if(msg == NULL)msg = (void *)&pvNullPointer;
复制代码
如果我不去屏蔽此句,协议栈API下接收到空消息导致pbuf的tot_len是65535.进而导致tpc.c下的tcp_recved函数中的
  1.   LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n",
  2.               len <= 0xffff - pcb->rcv_wnd );
复制代码
此判断生效,程序陷入死循环

回复

使用道具 举报

 楼主| 发表于 2016-9-29 11:15:45 | 显示全部楼层
接收到空消息,此处会返回对方断开连接
  1. if (buf == NULL) {
  2.       API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
  3.       /* Avoid to lose any previous error code */
  4.       NETCONN_SET_SAFE_ERR(conn, ERR_CLSD);
  5.       return ERR_CLSD;
  6.     }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 11:21 , Processed in 0.032696 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表