From d542edbb3d48b416e2ba6d78cdb51b07eda6332f 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 a26ce18a0f..1ec5669b92 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -726,7 +726,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; @@ -745,9 +745,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