diff --git a/src/websockets.c b/src/websockets.c index 231cb72b..975a10c0 100644 --- a/src/websockets.c +++ b/src/websockets.c @@ -193,7 +193,10 @@ static int callback_mqtt(struct libwebsocket_context *context, } } } - + if(!mosq->listener){ + _mosquitto_free(mosq); + return -1; + } #if !defined(LWS_LIBRARY_VERSION_NUMBER) mosq->ws_context = context; #endif @@ -209,6 +212,12 @@ static int callback_mqtt(struct libwebsocket_context *context, u->mosq = NULL; return -1; } + if(mosq->listener->max_connections > 0 && mosq->listener->client_count > mosq->listener->max_connections){ + _mosquitto_log_printf(NULL, MOSQ_LOG_NOTICE, "Client connection from %s denied: max_connections exceeded.", mosq->address); + _mosquitto_free(mosq); + u->mosq = NULL; + return -1; + } break; case LWS_CALLBACK_CLOSED: