# HG changeset patch # User Timo Sirainen # Date 1504857749 -10800 # Node ID 0af134a26b4ab0c1ea05a5258229e0b22eae2be8 # Parent 425ee358192741dea55c698fe5377c9dad7d33f3 doveadm proxy: Avoid DNS lookup for "host" if passdb also returns "hostip" diff -r 425ee3581927 -r 0af134a26b4a src/doveadm/doveadm-mail-server.c --- 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) {