From acf5333b1ebc9aba1b6c2aba0569ef6ec1f2e5b8 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Wed, 16 Jun 2021 19:39:15 +0200 Subject: [PATCH] esp_netif: Fix dhcps state transitions When the DHCP server is stopped before starting the netif, it should remain stopped -- as per compatibility with previous tcpip_adapter behavior --- components/esp_netif/lwip/esp_netif_lwip.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/esp_netif/lwip/esp_netif_lwip.c b/components/esp_netif/lwip/esp_netif_lwip.c index 12434d9eea..84807a385d 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -724,7 +724,7 @@ static esp_err_t esp_netif_start_api(esp_netif_api_msg_t *msg) } if (esp_netif->flags & ESP_NETIF_DHCP_SERVER) { #if ESP_DHCPS - if (esp_netif->dhcps_status != ESP_NETIF_DHCP_STARTED) { + if (esp_netif->dhcps_status == ESP_NETIF_DHCP_INIT) { if (p_netif != NULL && netif_is_up(p_netif)) { esp_netif_ip_info_t *default_ip = esp_netif->ip_info; ip4_addr_t lwip_ip; @@ -743,9 +743,11 @@ static esp_err_t esp_netif_start_api(esp_netif_api_msg_t *msg) esp_netif->dhcps_status = ESP_NETIF_DHCP_INIT; return ESP_OK; } + } else if (esp_netif->dhcps_status == ESP_NETIF_DHCP_STARTED) { + ESP_LOGD(TAG, "DHCP server already started"); + return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED; } - ESP_LOGD(TAG, "DHCP server already started"); - return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED; + return ESP_OK; #else LOG_NETIF_DISABLED_AND_DO("DHCP Server", return ESP_ERR_NOT_SUPPORTED); #endif