From 57f964a139bfe6dba784fbeefe5f4e13621bd767 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Wed, 7 Dec 2016 17:16:42 +0000 Subject: [PATCH] Add mqtt last will PUBLISHED_FROM=fb856714ead67390dfd7ce9d208ae5ae19ce7c6d --- mongoose.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mongoose.c b/mongoose.c index aa995004..f025262e 100644 --- a/mongoose.c +++ b/mongoose.c @@ -9691,6 +9691,11 @@ void mg_send_mqtt_handshake_opt(struct mg_connection *nc, const char *client_id, opts.flags |= MG_MQTT_HAS_PASSWORD; rem_len += (uint8_t) strlen(opts.password) + 2; } + if (opts.will_topic != NULL && opts.will_message != NULL) { + opts.flags |= MG_MQTT_HAS_WILL; + rem_len += (uint8_t) strlen(opts.will_topic) + 2; + rem_len += (uint8_t) strlen(opts.will_message) + 2; + } mg_send(nc, &header, 1); mg_send(nc, &rem_len, 1); @@ -9708,6 +9713,16 @@ void mg_send_mqtt_handshake_opt(struct mg_connection *nc, const char *client_id, mg_send(nc, &len, 2); mg_send(nc, client_id, strlen(client_id)); + if (opts.flags & MG_MQTT_HAS_WILL) { + len = htons((uint16_t) strlen(opts.will_topic)); + mg_send(nc, &len, 2); + mg_send(nc, opts.will_topic, strlen(opts.will_topic)); + + len = htons((uint16_t) strlen(opts.will_message)); + mg_send(nc, &len, 2); + mg_send(nc, opts.will_message, strlen(opts.will_message)); + } + if (opts.flags & MG_MQTT_HAS_USER_NAME) { len = htons((uint16_t) strlen(opts.user_name)); mg_send(nc, &len, 2);