From cb33a0fb9bc902901868f3d3b7189852674c8eca Mon Sep 17 00:00:00 2001 From: Wu Jian Gang Date: Fri, 26 Aug 2016 11:52:46 +0800 Subject: [PATCH] tcpip_adapter: clean up dhcpc status only auto start dhcpc in init status --- components/esp32/event.c | 9 ++++++++- components/tcpip_adapter/tcpip_adapter_lwip.c | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/components/esp32/event.c b/components/esp32/event.c index d10972e295..6839493246 100644 --- a/components/esp32/event.c +++ b/components/esp32/event.c @@ -116,10 +116,17 @@ esp_err_t system_event_sta_stop_handle_default(system_event_t *event) esp_err_t system_event_sta_connected_handle_default(system_event_t *event) { + tcpip_adapter_dhcp_status_t status; + WIFI_API_CALL_CHECK("esp_wifi_reg_rxcb", esp_wifi_reg_rxcb(WIFI_IF_STA, (wifi_rxcb_t)tcpip_adapter_sta_input), ESP_OK); tcpip_adapter_up(TCPIP_ADAPTER_IF_STA); - tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA); + + tcpip_adapter_dhcpc_get_status(TCPIP_ADAPTER_IF_STA, &status); + + if (status == TCPIP_ADAPTER_DHCP_INIT) { + tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA); + } return ESP_OK; } diff --git a/components/tcpip_adapter/tcpip_adapter_lwip.c b/components/tcpip_adapter/tcpip_adapter_lwip.c index e846479055..d6ad20ad83 100644 --- a/components/tcpip_adapter/tcpip_adapter_lwip.c +++ b/components/tcpip_adapter/tcpip_adapter_lwip.c @@ -147,7 +147,10 @@ esp_err_t tcpip_adapter_down(tcpip_adapter_if_t tcpip_if) dhcp_release(esp_netif[tcpip_if]); dhcp_stop(esp_netif[tcpip_if]); dhcp_cleanup(esp_netif[tcpip_if]); - dhcpc_status = TCPIP_ADAPTER_DHCP_STOPED; + + if (dhcpc_status != TCPIP_ADAPTER_DHCP_STOPED) { + dhcpc_status = TCPIP_ADAPTER_DHCP_INIT; + } } else { netif_set_down(esp_netif[tcpip_if]); netif_set_addr(esp_netif[tcpip_if], IP4_ADDR_ANY, IP4_ADDR_ANY, IP4_ADDR_ANY); -- 2.40.0