From 98b09d73e3037f007096848e4f52588177ac7e3c Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Sat, 13 Sep 2025 19:47:08 +0800 Subject: [PATCH] =?UTF-8?q?[lwip/core/dhcp.c]Fixed=20incorrect=20pairing?= =?UTF-8?q?=20of=20DHCP=20enable/disable=20in=20lwip=20(=E2=89=A4v2.0.3).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/net/lwip/lwip-1.4.1/src/core/dhcp.c | 5 +++-- .../net/lwip/lwip-2.0.3/src/core/ipv4/dhcp.c | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) 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;