Mercurial > dovecot > core-2.2
changeset 11883:ab85d17947db
director: Added director_doveadm_port for accepting doveadm TCP connections.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 22 Jul 2010 16:07:06 +0100 |
parents | ec35e240db6c |
children | 459bd9621197 |
files | doc/example-config/conf.d/10-director.conf src/director/director-settings.c src/director/director-settings.h src/director/main.c |
diffstat | 4 files changed, 15 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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 {
--- 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 = {
--- 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;
--- 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; }