Further fix for #2546.
This commit is contained in:
parent
e979a46c04
commit
08610f7c99
@ -169,6 +169,11 @@ static int persist__client_save(FILE *db_fptr)
|
||||
HASH_ITER(hh_id, db.contexts_by_id, context, ctxt_tmp){
|
||||
if(context && context->clean_start == false){
|
||||
chunk.F.session_expiry_time = context->session_expiry_time;
|
||||
if(context->session_expiry_interval != 0 && context->session_expiry_interval != UINT32_MAX && context->session_expiry_time == 0){
|
||||
chunk.F.session_expiry_time = context->session_expiry_interval + db.now_real_s;
|
||||
}else{
|
||||
chunk.F.session_expiry_time = context->session_expiry_time;
|
||||
}
|
||||
chunk.F.session_expiry_interval = context->session_expiry_interval;
|
||||
chunk.F.last_mid = context->last_mid;
|
||||
chunk.F.id_len = (uint16_t)strlen(context->id);
|
||||
|
@ -86,6 +86,14 @@ int session_expiry__add_from_persistence(struct mosquitto *context, time_t expir
|
||||
{
|
||||
struct session_expiry_list *item;
|
||||
|
||||
if(db.config->persistent_client_expiration == 0){
|
||||
if(context->session_expiry_interval == UINT32_MAX){
|
||||
/* There isn't a global expiry set, and the client has asked to
|
||||
* never expire, so we don't add it to the list. */
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
item = mosquitto__calloc(1, sizeof(struct session_expiry_list));
|
||||
if(!item) return MOSQ_ERR_NOMEM;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user