diff --git a/esp-link/config.c b/esp-link/config.c index 224f047..7693e7f 100644 --- a/esp-link/config.c +++ b/esp-link/config.c @@ -23,7 +23,7 @@ FlashConfig flashDefault = { .slip_enable = 0, .mqtt_enable = 0, .mqtt_status_enable = 0, .mqtt_timeout = 2, .mqtt_clean_session = 1, .mqtt_port = 1883, .mqtt_keepalive = 60, - .mqtt_old_host = "\0", .mqtt_clientid = "\0", + .mqtt_old_host = "\0", .mqtt_old_password = "\0", .mqtt_clientid = "\0", .mqtt_username = "\0", .mqtt_password = "\0", .mqtt_status_topic = "\0", .mqtt_host = "\0", .sys_descr = "\0", @@ -154,6 +154,13 @@ bool ICACHE_FLASH_ATTR configRestore(void) { os_memset(flashConfig.mqtt_old_host, 0, 32); } else os_printf("mqtt_host is '%s'\n", flashConfig.mqtt_host); + if (flashConfig.mqtt_password[0] == 0 && flashConfig.mqtt_old_password[0] != 0) { + // the mqtt_password got changed from 32 chars to 64 in a new location + os_printf("Converting old mqtt_password\n"); + os_memcpy(flashConfig.mqtt_password, flashConfig.mqtt_old_password, 32); + os_memset(flashConfig.mqtt_old_password, 0, 32); + } + if (flashConfig.data_bits == 0) { // restore to default 8N1 flashConfig.data_bits = flashDefault.data_bits; diff --git a/esp-link/config.h b/esp-link/config.h index 65195d2..b495dc3 100644 --- a/esp-link/config.h +++ b/esp-link/config.h @@ -24,7 +24,7 @@ typedef struct { char mqtt_old_host[32], // replaced by 64-char mqtt_host below mqtt_clientid[48], mqtt_username[32], - mqtt_password[32], + mqtt_old_password[32], // replaced by 64-char mqtt_password below mqtt_status_topic[32]; char sys_descr[129]; // system description int8_t rx_pullup; // internal pull-up on RX pin @@ -41,6 +41,7 @@ typedef struct { int8_t data_bits; int8_t parity; int8_t stop_bits; + char mqtt_password[64]; // MQTT password, was 32-char mqtt_old_password } FlashConfig; extern FlashConfig flashConfig;