diff --git a/src/main.cpp b/src/main.cpp index b909983..b1f17bd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -557,24 +557,22 @@ static void handleConfig() { val.toCharArray(hostname, sizeof(hostname)); } - if (server.hasArg("mqtt_en")) { - mqttCfg.enabled = true; - if (server.hasArg("mqtt_host")) - strlcpy(mqttCfg.host, server.arg("mqtt_host").c_str(), sizeof(mqttCfg.host)); - if (server.hasArg("mqtt_port")) - mqttCfg.port = server.arg("mqtt_port").toInt(); - if (server.hasArg("mqtt_user")) - strlcpy(mqttCfg.user, server.arg("mqtt_user").c_str(), sizeof(mqttCfg.user)); - if (server.hasArg("mqtt_pass") && server.arg("mqtt_pass").length() > 0) - strlcpy(mqttCfg.pass, server.arg("mqtt_pass").c_str(), sizeof(mqttCfg.pass)); - if (server.hasArg("mqtt_prefix")) - strlcpy(mqttCfg.prefix, server.arg("mqtt_prefix").c_str(), sizeof(mqttCfg.prefix)); - Serial.printf("[HTTP] mqtt enabled host=%s port=%u user=%s prefix=%s\n", - mqttCfg.host, mqttCfg.port, mqttCfg.user, mqttCfg.prefix); - } else { - mqttCfg.enabled = false; - Serial.println("[HTTP] mqtt disabled"); - } + // Persist the connection fields regardless of the enable checkbox so edits + // made while disabling MQTT aren't discarded. + if (server.hasArg("mqtt_host")) + strlcpy(mqttCfg.host, server.arg("mqtt_host").c_str(), sizeof(mqttCfg.host)); + if (server.hasArg("mqtt_port")) + mqttCfg.port = server.arg("mqtt_port").toInt(); + if (server.hasArg("mqtt_user")) + strlcpy(mqttCfg.user, server.arg("mqtt_user").c_str(), sizeof(mqttCfg.user)); + if (server.hasArg("mqtt_pass") && server.arg("mqtt_pass").length() > 0) + strlcpy(mqttCfg.pass, server.arg("mqtt_pass").c_str(), sizeof(mqttCfg.pass)); + if (server.hasArg("mqtt_prefix")) + strlcpy(mqttCfg.prefix, server.arg("mqtt_prefix").c_str(), sizeof(mqttCfg.prefix)); + + mqttCfg.enabled = server.hasArg("mqtt_en"); + Serial.printf("[HTTP] mqtt enabled=%d host=%s port=%u user=%s prefix=%s\n", + mqttCfg.enabled, mqttCfg.host, mqttCfg.port, mqttCfg.user, mqttCfg.prefix); if (server.hasArg("auth_en")) { if (server.hasArg("auth_pass") && server.arg("auth_pass").length() > 0)