dovecot-2.0: lib-master: Make sure IO listeners aren't added bac...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 20 18:07:21 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/68169de12764
changeset: 10794:68169de12764
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Feb 20 18:07:18 2010 +0200
description:
lib-master: Make sure IO listeners aren't added back while doing auth lookup.

diffstat:

 src/lib-master/master-login.c           |  3 +++
 src/lib-master/master-service-private.h |  1 +
 src/lib-master/master-service.c         |  2 +-
 3 files changed, 5 insertions(+), 1 deletions(-)

diffs (43 lines):

diff -r bf4822f0846b -r 68169de12764 src/lib-master/master-login.c
--- a/src/lib-master/master-login.c	Sat Feb 20 17:16:41 2010 +0200
+++ b/src/lib-master/master-login.c	Sat Feb 20 18:07:18 2010 +0200
@@ -399,6 +399,7 @@
 	   and currently we don't try to accept more connections until this
 	   request's authentication is finished, because updating
 	   available_count gets tricky. */
+	login->service->login_authenticating = TRUE;
 	master_service_io_listeners_remove(login->service);
 }
 
@@ -415,6 +416,8 @@
 	o_stream_unref(&conn->output);
 	if (close(conn->fd) < 0)
 		i_error("close(master login) failed: %m");
+
+	conn->login->service->login_authenticating = FALSE;
 	master_service_io_listeners_add(conn->login->service);
 	master_login_conn_unref(&conn);
 }
diff -r bf4822f0846b -r 68169de12764 src/lib-master/master-service-private.h
--- a/src/lib-master/master-service-private.h	Sat Feb 20 17:16:41 2010 +0200
+++ b/src/lib-master/master-service-private.h	Sat Feb 20 18:07:18 2010 +0200
@@ -57,6 +57,7 @@
 	unsigned int call_avail_overflow:1;
 	unsigned int delay_status_updates:1;
 	unsigned int config_path_is_default:1;
+	unsigned int login_authenticating:1;
 };
 
 void master_service_io_listeners_add(struct master_service *service);
diff -r bf4822f0846b -r 68169de12764 src/lib-master/master-service.c
--- a/src/lib-master/master-service.c	Sat Feb 20 17:16:41 2010 +0200
+++ b/src/lib-master/master-service.c	Sat Feb 20 18:07:18 2010 +0200
@@ -735,7 +735,7 @@
 {
 	unsigned int i;
 
-	if (service->stopping)
+	if (service->stopping || service->login_authenticating)
 		return;
 
 	if (service->listeners == NULL)


More information about the dovecot-cvs mailing list