]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm proxy: Avoid DNS lookup for "host" if passdb also returns "hostip"
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 8 Sep 2017 08:02:29 +0000 (11:02 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 8 Sep 2017 08:39:53 +0000 (11:39 +0300)
src/doveadm/doveadm-mail-server.c

index 442c302389e66533487ba1ad06892f2a0bdaf864..b84260820fbd66989c1f23c1e84eca848df82ff4 100644 (file)
@@ -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) {