From 930b9172172502819104525ceec3dcda002e3913 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Fri, 13 Jun 2014 22:34:04 +0100 Subject: [PATCH] Save disconnect_t for connected clients when the broker exits. --- src/persist.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/persist.c b/src/persist.c index 602d4a4f..d47a4182 100644 --- a/src/persist.c +++ b/src/persist.c @@ -228,6 +228,7 @@ static int mqtt3_db_client_write(struct mosquitto_db *db, FILE *db_fptr) struct mosquitto *context; uint16_t i16temp, slen; uint32_t length; + time_t disconnect_t; assert(db); assert(db_fptr); @@ -247,7 +248,12 @@ static int mqtt3_db_client_write(struct mosquitto_db *db, FILE *db_fptr) write_e(db_fptr, context->id, slen); i16temp = htons(context->last_mid); write_e(db_fptr, &i16temp, sizeof(uint16_t)); - write_e(db_fptr, &(context->disconnect_t), sizeof(time_t)); + if(context->disconnect_t){ + disconnect_t = context->disconnect_t; + }else{ + disconnect_t = time(NULL); + } + write_e(db_fptr, &disconnect_t, sizeof(time_t)); if(mqtt3_db_client_messages_write(db, db_fptr, context)) return 1; }