From: Timo Sirainen Date: Fri, 8 Sep 2017 08:02:29 +0000 (+0300) Subject: doveadm proxy: Avoid DNS lookup for "host" if passdb also returns "hostip" X-Git-Tag: 2.3.0.rc1~1070 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a07e0d83e1fd465d7ee13771ded72a8d152b5bbb;p=thirdparty%2Fdovecot%2Fcore.git doveadm proxy: Avoid DNS lookup for "host" if passdb also returns "hostip" --- diff --git a/src/doveadm/doveadm-mail-server.c b/src/doveadm/doveadm-mail-server.c index 442c302389..b84260820f 100644 --- a/src/doveadm/doveadm-mail-server.c +++ b/src/doveadm/doveadm-mail-server.c @@ -179,7 +179,7 @@ doveadm_mail_server_user_get_host(struct doveadm_mail_cmd_context *ctx, 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 @@ doveadm_mail_server_user_get_host(struct doveadm_mail_cmd_context *ctx, /* 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 @@ doveadm_mail_server_user_get_host(struct doveadm_mail_cmd_context *ctx, 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 @@ doveadm_mail_server_user_get_host(struct doveadm_mail_cmd_context *ctx, proxy_port = 0; } } + if (proxy_hostip != NULL) + proxy_host = proxy_hostip; if (!proxying) ret = 0; else if (proxy_host == NULL) {