# HG changeset patch # User Timo Sirainen # Date 1504857680 -10800 # Node ID 3b6fb61e5fb19ff3995b8f3bb795aa0ef80b88ce # Parent 4dd4e41cd4a11d4ff061a7e2fb649871936c4157 auth: Avoid DNS lookup for "host" if passdb returns also "hostip" diff -r 4dd4e41cd4a1 -r 3b6fb61e5fb1 src/auth/auth-request.c --- a/src/auth/auth-request.c Tue Jul 25 10:39:43 2017 +0300 +++ b/src/auth/auth-request.c Fri Sep 08 11:01:20 2017 +0300 @@ -2264,7 +2264,7 @@ int auth_request_proxy_finish(struct auth_request *request, auth_request_proxy_cb_t *callback) { - const char *host; + const char *host, *hostip; struct ip_addr ip; bool proxy_host_is_self; @@ -2291,8 +2291,18 @@ proxy_host_is_self = auth_request_proxy_ip_is_self(request, &ip); } else { - /* asynchronous host lookup */ - return auth_request_proxy_host_lookup(request, host, callback); + hostip = auth_fields_find(request->extra_fields, "hostip"); + if (hostip != NULL && net_addr2ip(hostip, &ip) < 0) { + auth_request_log_error(request, AUTH_SUBSYS_PROXY, + "Invalid hostip in passdb: %s", hostip); + return -1; + } + if (hostip == NULL) { + /* asynchronous host lookup */ + return auth_request_proxy_host_lookup(request, host, callback); + } + proxy_host_is_self = + auth_request_proxy_ip_is_self(request, &ip); } auth_request_proxy_finish_ip(request, proxy_host_is_self);