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