summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/esp32/network_lan.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ports/esp32/network_lan.c b/ports/esp32/network_lan.c
index 7e7ebcc92..b957c5f89 100644
--- a/ports/esp32/network_lan.c
+++ b/ports/esp32/network_lan.c
@@ -312,13 +312,14 @@ static mp_obj_t lan_active(size_t n_args, const mp_obj_t *args) {
lan_if_obj_t *self = MP_OBJ_TO_PTR(args[0]);
if (n_args > 1) {
- if (mp_obj_is_true(args[1])) {
+ bool make_active = mp_obj_is_true(args[1]);
+ if (make_active && !self->base.active) {
esp_netif_set_hostname(self->base.netif, mod_network_hostname_data);
self->base.active = (esp_eth_start(self->eth_handle) == ESP_OK);
if (!self->base.active) {
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("ethernet enable failed"));
}
- } else {
+ } else if (!make_active && self->base.active) {
self->base.active = !(esp_eth_stop(self->eth_handle) == ESP_OK);
if (self->base.active) {
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT("ethernet disable failed"));