From 885e1b36da370a674c0fd3b85db53740d7dcbd9b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 4 Sep 2009 14:17:48 -0400 Subject: [PATCH] lib-master: Make sure master_status.available_count is updated correctly. --HG-- branch : HEAD --- src/lib-master/master-service.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 3769b4c70f..22ff14356c 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -330,11 +330,17 @@ void master_service_env_clean(bool preserve_home) void master_service_set_client_limit(struct master_service *service, unsigned int client_limit) { + unsigned int used; + i_assert(service->master_status.available_count == service->total_available_count); + used = service->total_available_count - + service->master_status.available_count; + i_assert(client_limit >= used); + service->total_available_count = client_limit; - service->master_status.available_count = client_limit; + service->master_status.available_count = client_limit - used; } unsigned int master_service_get_client_limit(struct master_service *service) @@ -422,6 +428,8 @@ void master_service_client_connection_destroyed(struct master_service *service) if (service->service_count_left != service->total_available_count) { i_assert(service->service_count_left == (unsigned int)-1); + i_assert(service->master_status.available_count < + service->total_available_count); service->master_status.available_count++; } else { /* we have only limited amount of service requests left */ -- 2.47.3