Mercurial > dovecot > core-2.2
changeset 9868:63d2755c9211 HEAD
lib-master: Make sure master_status.available_count is updated correctly.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 04 Sep 2009 14:17:48 -0400 |
parents | 6168a479c54b |
children | 464c01ae9f0c |
files | src/lib-master/master-service.c |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-master/master-service.c Fri Sep 04 14:17:03 2009 -0400 +++ b/src/lib-master/master-service.c Fri Sep 04 14:17:48 2009 -0400 @@ -330,11 +330,17 @@ 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 @@ 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 */