mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-05-21 12:24:29 +02:00
Fix clients not having session-expiry-time updated on broker close
Issue #3645.
This commit is contained in:
parent
b94b9477e5
commit
5a830e1a78
|
|
@ -344,6 +344,7 @@ static void post_shutdown_cleanup(void)
|
|||
context__send_will(ctxt);
|
||||
}
|
||||
will_delay__send_all();
|
||||
session_expiry__add_on_shutdown();
|
||||
|
||||
/* Set to true only after persistence events have been processed */
|
||||
db.shutdown = true;
|
||||
|
|
|
|||
|
|
@ -935,6 +935,7 @@ void unpwd__free_item(struct mosquitto__unpwd **unpwd, struct mosquitto__unpwd *
|
|||
* ============================================================ */
|
||||
int session_expiry__add(struct mosquitto *context);
|
||||
int session_expiry__add_from_persistence(struct mosquitto *context, time_t expiry_time);
|
||||
void session_expiry__add_on_shutdown(void);
|
||||
void session_expiry__remove(struct mosquitto *context);
|
||||
void session_expiry__remove_all(void);
|
||||
void session_expiry__check(void);
|
||||
|
|
|
|||
|
|
@ -134,6 +134,22 @@ int session_expiry__add_from_persistence(struct mosquitto *context, time_t expir
|
|||
}
|
||||
|
||||
|
||||
void session_expiry__add_on_shutdown(void)
|
||||
{
|
||||
struct mosquitto *ctxt, *ctxt_tmp;
|
||||
|
||||
HASH_ITER(hh_id, db.contexts_by_id, ctxt, ctxt_tmp){
|
||||
if(ctxt->bridge == NULL
|
||||
&& ctxt->is_persisted
|
||||
&& ctxt->session_expiry_interval != MQTT_SESSION_EXPIRY_IMMEDIATE
|
||||
){
|
||||
|
||||
session_expiry__add(ctxt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void session_expiry__remove(struct mosquitto *context)
|
||||
{
|
||||
if(context->expiry_list_item){
|
||||
|
|
|
|||
Loading…
Reference in a new issue