diff --git a/include/mqtt_client.h b/include/mqtt_client.h index 318992a..e5b2e61 100755 --- a/include/mqtt_client.h +++ b/include/mqtt_client.h @@ -67,6 +67,7 @@ typedef struct { char lwt_msg[MQTT_MAX_LWT_MSG]; int lwt_qos; int lwt_retain; + int lwt_msg_len; int disable_clean_session; int keepalive; bool disable_auto_reconnect; diff --git a/include/mqtt_config.h b/include/mqtt_config.h index 7daec77..15222c4 100644 --- a/include/mqtt_config.h +++ b/include/mqtt_config.h @@ -12,9 +12,9 @@ #define MQTT_MAX_HOST_LEN 64 #define MQTT_MAX_CLIENT_LEN 32 #define MQTT_MAX_USERNAME_LEN 32 -#define MQTT_MAX_PASSWORD_LEN 32 +#define MQTT_MAX_PASSWORD_LEN 65 #define MQTT_MAX_LWT_TOPIC 32 -#define MQTT_MAX_LWT_MSG 32 +#define MQTT_MAX_LWT_MSG 128 #define MQTT_TASK_PRIORITY 5 #define MQTT_TASK_STACK (6*1024) #define MQTT_KEEPALIVE_TICK (120) diff --git a/mqtt_client.c b/mqtt_client.c index 5b06501..cc7986d 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -127,7 +127,12 @@ static esp_err_t esp_mqtt_set_config(esp_mqtt_client_handle_t client, const esp_ if (config->lwt_msg[0]) { client->connect_info.will_message = strdup(config->lwt_msg); - client->connect_info.will_length = strlen(config->lwt_msg); + if (config->lwt_msg_len > 0) { + client->connect_info.will_length = config->lwt_msg_len; + } + else { + client->connect_info.will_length = strlen(config->lwt_msg); + } } client->connect_info.will_qos = config->lwt_qos;