Mercurial > dovecot > core-2.2
changeset 22546:0af134a26b4a
doveadm proxy: Avoid DNS lookup for "host" if passdb also returns "hostip"
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 08 Sep 2017 11:02:29 +0300 |
parents | 425ee3581927 |
children | ae84a2f539bf |
files | src/doveadm/doveadm-mail-server.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail-server.c Fri Sep 08 11:02:07 2017 +0300 +++ b/src/doveadm/doveadm-mail-server.c Fri Sep 08 11:02:29 2017 +0300 @@ -179,7 +179,7 @@ struct auth_master_connection *auth_conn; struct auth_user_info info; pool_t pool; - const char *auth_socket_path, *proxy_host, *const *fields; + const char *auth_socket_path, *proxy_host, *proxy_hostip, *const *fields; unsigned int i; in_port_t proxy_port; bool proxying; @@ -216,7 +216,7 @@ /* user not found from passdb. it could be in userdb though, so just continue with the default host */ } else { - proxy_host = NULL; proxying = FALSE; + proxy_host = NULL; proxy_hostip = NULL; proxying = FALSE; proxy_port = ctx->set->doveadm_port; for (i = 0; fields[i] != NULL; i++) { if (strncmp(fields[i], "proxy", 5) == 0 && @@ -224,6 +224,8 @@ proxying = TRUE; else if (strncmp(fields[i], "host=", 5) == 0) proxy_host = fields[i]+5; + else if (strncmp(fields[i], "hostip=", 7) == 0) + proxy_hostip = fields[i]+7; else if (strncmp(fields[i], "user=", 5) == 0) *user_r = t_strdup(fields[i]+5); else if (strncmp(fields[i], "destuser=", 9) == 0) @@ -233,6 +235,8 @@ proxy_port = 0; } } + if (proxy_hostip != NULL) + proxy_host = proxy_hostip; if (!proxying) ret = 0; else if (proxy_host == NULL) {