From 6f3e7b9ceb43e2626a32340c26b69ac8ae5e9c8c Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Fri, 6 Sep 2019 22:28:11 +0100 Subject: [PATCH] Further fix for #1401. --- src/session_expiry.c | 2 ++ src/will_delay.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/session_expiry.c b/src/session_expiry.c index c0270e3732..e720b70334 100644 --- a/src/session_expiry.c +++ b/src/session_expiry.c @@ -79,6 +79,7 @@ void session_expiry__remove_all(struct mosquitto_db *db) session_expiry__remove(context); context->session_expiry_interval = 0; context->will_delay_interval = 0; + will_delay__remove(context); context__disconnect(db, context); } @@ -104,6 +105,7 @@ void session_expiry__check(struct mosquitto_db *db, time_t now) context->session_expiry_interval = 0; /* Session has expired, so will delay should be cleared. */ context->will_delay_interval = 0; + will_delay__remove(context); context__send_will(db, context); context__add_to_disused(db, context); }else{ diff --git a/src/will_delay.c b/src/will_delay.c index 4bed7a8749..8d2be08a04 100644 --- a/src/will_delay.c +++ b/src/will_delay.c @@ -96,6 +96,7 @@ void will_delay__remove(struct mosquitto *mosq) { if(mosq->will_delay_entry != NULL){ DL_DELETE(delay_list, mosq->will_delay_entry); + mosquitto__free(mosq->will_delay_entry); mosq->will_delay_entry = NULL; } }