From 8cfeae15fd9b63a76ba3ab1a8301a53976ac1333 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Thu, 23 Jul 2020 11:29:45 +0200 Subject: [PATCH] esp_netif: Remove restarting DHCP client and server if it has already been started To be in line with previous behaviour in tcpip_adapter, do nothing and return appropriate error if the DHCP client/server has already been started --- components/esp_netif/lwip/esp_netif_lwip.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/components/esp_netif/lwip/esp_netif_lwip.c b/components/esp_netif/lwip/esp_netif_lwip.c index f7bbc202ce..f95c83f400 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -950,6 +950,11 @@ static esp_err_t esp_netif_dhcpc_start_api(esp_netif_api_msg_t *msg) return ESP_ERR_INVALID_ARG; } + if (esp_netif->dhcpc_status == ESP_NETIF_DHCP_STARTED) { + ESP_LOGD(TAG, "dhcp client already started"); + return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED; + } + struct netif *p_netif = esp_netif->lwip_netif; esp_netif_reset_ip_info(esp_netif); @@ -1019,6 +1024,11 @@ static esp_err_t esp_netif_dhcps_start_api(esp_netif_api_msg_t *msg) return ESP_ERR_INVALID_ARG; } + if (esp_netif->dhcps_status == ESP_NETIF_DHCP_STARTED) { + ESP_LOGD(TAG, "dhcp server already started"); + return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED; + } + struct netif *p_netif = esp_netif->lwip_netif; if (p_netif != NULL && netif_is_up(p_netif)) { esp_netif_ip_info_t *default_ip = esp_netif->ip_info;