diff --git a/src/context.c b/src/context.c index b2f851ea..923d06f8 100644 --- a/src/context.c +++ b/src/context.c @@ -214,19 +214,20 @@ void context__disconnect(struct mosquitto *context) context__send_will(context); net__socket_close(context); - if(context->session_expiry_interval == 0){ - /* Client session is due to be expired now */ #ifdef WITH_BRIDGE - if(context->bridge == NULL) + if(context->bridge == NULL) + /* Outgoing bridge connection never expire */ #endif - { + { + if(context->session_expiry_interval == 0){ + /* Client session is due to be expired now */ if(context->will_delay_interval == 0){ /* This will be done later, after the will is published for delay>0. */ context__add_to_disused(context); } + }else{ + session_expiry__add(context); } - }else{ - session_expiry__add(context); } keepalive__remove(context); mosquitto__set_state(context, mosq_cs_disconnected);