diff --git a/components/net/lwip/lwip-1.4.1/src/core/dhcp.c b/components/net/lwip/lwip-1.4.1/src/core/dhcp.c index eb12c550219..94e6edeb3b4 100644 --- a/components/net/lwip/lwip-1.4.1/src/core/dhcp.c +++ b/components/net/lwip/lwip-1.4.1/src/core/dhcp.c @@ -1735,9 +1735,10 @@ static void dhcp_delete_msg(struct dhcp *dhcp) { LWIP_ERROR("dhcp_delete_msg: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL); - LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); + /* LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL); */ + /* LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); */ if (dhcp->p_out != NULL) { + LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); pbuf_free(dhcp->p_out); } dhcp->p_out = NULL; diff --git a/components/net/lwip/lwip-2.0.3/src/core/ipv4/dhcp.c b/components/net/lwip/lwip-2.0.3/src/core/ipv4/dhcp.c index 0cf97b0340e..2bd98f5e2a0 100644 --- a/components/net/lwip/lwip-2.0.3/src/core/ipv4/dhcp.c +++ b/components/net/lwip/lwip-2.0.3/src/core/ipv4/dhcp.c @@ -1358,7 +1358,6 @@ dhcp_stop(struct netif *netif) LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL); dhcp_set_state(dhcp, DHCP_STATE_OFF); - if (dhcp->pcb_allocated != 0) { dhcp_dec_pcb_refcount(); /* free DHCP PCB if not needed any more */ dhcp->pcb_allocated = 0; @@ -1817,7 +1816,15 @@ dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type) xid = DHCP_GLOBAL_XID; xid_initialised = !xid_initialised; } -#endif + #endif + + /* Clear any existing message before creating a new one */ + if (dhcp->p_out != NULL) { + pbuf_free(dhcp->p_out); + dhcp->p_out = NULL; + dhcp->msg_out = NULL; + } + LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return ERR_ARG;); LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); LWIP_ASSERT("dhcp_create_msg: dhcp->p_out == NULL", dhcp->p_out == NULL); @@ -1899,9 +1906,10 @@ static void dhcp_delete_msg(struct dhcp *dhcp) { LWIP_ERROR("dhcp_delete_msg: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL); - LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); + /* LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL); */ + /* LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); */ if (dhcp->p_out != NULL) { + LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); pbuf_free(dhcp->p_out); } dhcp->p_out = NULL;