From: Timo Sirainen Date: Wed, 23 Oct 2013 13:33:43 +0000 (+0300) Subject: lib-master: Fix to previous commit. X-Git-Tag: 2.2.7~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e7a3ba6a438aa2963355805a13e89bea3cd47ba9;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Fix to previous commit. It broke doveadm-server's "does client need authentication?" check. --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 264690e0fb..c3666aa67f 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -638,15 +638,6 @@ void master_service_client_connection_created(struct master_service *service) i_assert(service->master_status.available_count > 0); service->master_status.available_count--; master_status_update(service); - - if (service->master_status.available_count == 0 && - service->service_count_left == 1) { - /* we're not going to accept any more connections after this. - go ahead and close the connection early. */ - i_assert(service->listeners != NULL); - master_service_io_listeners_remove(service); - master_service_io_listeners_close(service); - } } void master_service_client_connection_accept(struct master_service_connection *conn) @@ -849,6 +840,16 @@ static void master_service_listen(struct master_service_listener *l) as real clients */ master_service_client_connection_destroyed(service); } + if (service->master_status.available_count == 0 && + service->service_count_left == 1) { + /* we're not going to accept any more connections after this. + go ahead and close the connection early. don't do this + before calling callback, because it may want to access + the listen_fd (e.g. to check socket permissions). */ + i_assert(service->listeners != NULL); + master_service_io_listeners_remove(service); + master_service_io_listeners_close(service); + } } static void io_listeners_init(struct master_service *service)