From 2b65b82bd6ed3c0977b7719ae3c4356619ba400a 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 e69e2164d9..a64270be72 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -643,7 +643,7 @@ static esp_err_t esp_netif_start_api(esp_netif_api_msg_t *msg) netif_set_up(p_netif); } if (esp_netif->flags & ESP_NETIF_DHCP_SERVER) { - 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; @@ -662,9 +662,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 if (esp_netif->flags & ESP_NETIF_DHCP_CLIENT) { if (esp_netif->dhcpc_status != ESP_NETIF_DHCP_STARTED) { if (p_netif != NULL) {