dovecot-2.0: director: Added director_doveadm_port for accepting...

dovecot at dovecot.org dovecot at dovecot.org
Thu Jul 22 18:07:11 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/ab85d17947db
changeset: 11883:ab85d17947db
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Jul 22 16:07:06 2010 +0100
description:
director: Added director_doveadm_port for accepting doveadm TCP connections.

diffstat:

 doc/example-config/conf.d/10-director.conf |  4 ++++
 src/director/director-settings.c           |  4 +++-
 src/director/director-settings.h           |  1 +
 src/director/main.c                        |  9 +++++++--
 4 files changed, 15 insertions(+), 3 deletions(-)

diffs (66 lines):

diff -r ec35e240db6c -r ab85d17947db doc/example-config/conf.d/10-director.conf
--- a/doc/example-config/conf.d/10-director.conf	Thu Jul 22 13:48:14 2010 +0100
+++ b/doc/example-config/conf.d/10-director.conf	Thu Jul 22 16:07:06 2010 +0100
@@ -21,6 +21,10 @@
 # any connections.
 #director_user_expire = 15 min
 
+# TCP/IP port that accepts doveadm connections (instead of director connections)
+# If you enable this, you'll also need to add inet_listener for the port.
+#director_doveadm_port = 0
+
 # To enable director service, uncomment the modes and assign a port.
 service director {
   unix_listener login/director {
diff -r ec35e240db6c -r ab85d17947db src/director/director-settings.c
--- a/src/director/director-settings.c	Thu Jul 22 13:48:14 2010 +0100
+++ b/src/director/director-settings.c	Thu Jul 22 16:07:06 2010 +0100
@@ -68,6 +68,7 @@
 	DEF(SET_STR, director_servers),
 	DEF(SET_STR, director_mail_servers),
 	DEF(SET_TIME, director_user_expire),
+	DEF(SET_UINT, director_doveadm_port),
 
 	SETTING_DEFINE_LIST_END
 };
@@ -78,7 +79,8 @@
 
 	.director_servers = "",
 	.director_mail_servers = "",
-	.director_user_expire = 60*15
+	.director_user_expire = 60*15,
+	.director_doveadm_port = 0
 };
 
 const struct setting_parser_info director_setting_parser_info = {
diff -r ec35e240db6c -r ab85d17947db src/director/director-settings.h
--- a/src/director/director-settings.h	Thu Jul 22 13:48:14 2010 +0100
+++ b/src/director/director-settings.h	Thu Jul 22 16:07:06 2010 +0100
@@ -8,6 +8,7 @@
 	const char *director_servers;
 	const char *director_mail_servers;
 	unsigned int director_user_expire;
+	unsigned int director_doveadm_port;
 };
 
 extern const struct setting_parser_info director_setting_parser_info;
diff -r ec35e240db6c -r ab85d17947db src/director/main.c
--- a/src/director/main.c	Thu Jul 22 13:48:14 2010 +0100
+++ b/src/director/main.c	Thu Jul 22 16:07:06 2010 +0100
@@ -59,9 +59,14 @@
 
 	if (net_getpeername(conn->fd, &ip, &port) == 0 &&
 	    (IPADDR_IS_V4(&ip) || IPADDR_IS_V6(&ip))) {
-		/* TCP/IP connection - this is another director */
-		if (director_client_connected(conn->fd, &ip) == 0)
+		/* TCP/IP connection */
+		if (port == director->set->director_doveadm_port) {
 			master_service_client_connection_accept(conn);
+			(void)doveadm_connection_init(director, conn->fd);
+		} else {
+			if (director_client_connected(conn->fd, &ip) == 0)
+				master_service_client_connection_accept(conn);
+		}
 		return;
 	}
 


More information about the dovecot-cvs mailing list