diff --git a/components/net/lwip/port/sys_arch.c b/components/net/lwip/port/sys_arch.c index 8eb46e7a76..493ba4e893 100644 --- a/components/net/lwip/port/sys_arch.c +++ b/components/net/lwip/port/sys_arch.c @@ -408,8 +408,9 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout) else t = timeout / (1000 / RT_TICK_PER_SECOND); } - - ret = rt_mb_recv(*mbox, (rt_ubase_t *)msg, t); + /*When the waiting msg is generated by the application through signaling mechanisms, + only by using interruptible mode can the program be made runnable again*/ + ret = rt_mb_recv_interruptibale(*mbox, (rt_ubase_t *)msg, t); if(ret != RT_EOK) { return SYS_ARCH_TIMEOUT;