From 84aeb282e3ad41af1dc79eaffd2cb4de43eaa8a9 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 17 Sep 2025 17:00:07 +0100 Subject: [PATCH] Fix: session handling when per_listener_settings is set to true Closes #2618 Closes #2526 Thanks to Reuben Miller and llamaonaskateboard. --- lib/net_mosq.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/net_mosq.c b/lib/net_mosq.c index 3024a2ba..3dfd5928 100644 --- a/lib/net_mosq.c +++ b/lib/net_mosq.c @@ -240,6 +240,9 @@ int net__socket_close(struct mosquitto *mosq) mosquitto__set_state(mosq, mosq_cs_disconnect_ws); } lws_callback_on_writable(mosq->wsi); + if(mosq->listener){ + mosq->listener->client_count--; + } }else #endif { @@ -249,19 +252,15 @@ int net__socket_close(struct mosquitto *mosq) if(mosq_found){ HASH_DELETE(hh_sock, db.contexts_by_sock, mosq_found); } + if(mosq->listener && mosq->state != mosq_cs_disused){ + mosq->listener->client_count--; + } #endif rc = COMPAT_CLOSE(mosq->sock); mosq->sock = INVALID_SOCKET; } } -#ifdef WITH_BROKER - if(mosq->listener){ - mosq->listener->client_count--; - mosq->listener = NULL; - } -#endif - return rc; }