From: Ruediger Pluem Date: Thu, 28 Mar 2013 19:36:03 +0000 (+0000) Subject: * Improve reusage of already resolved addresses to avoid unnecessary DNS lookups. X-Git-Tag: 2.5.0-alpha~5638 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=43fdfc96cdc0a4b9d61da476f0ebd35300b56fa0;p=apache * Improve reusage of already resolved addresses to avoid unnecessary DNS lookups. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1462269 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index 441d2e40f5..9e773fb2e7 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -2156,10 +2156,21 @@ ap_proxy_determine_connection(apr_pool_t *p, request_rec *r, conn->uds_path = uds_path; } else { - err = apr_sockaddr_info_get(&(conn->addr), - conn->hostname, APR_UNSPEC, - conn->port, 0, - conn->pool); + if (worker->s->is_address_reusable && !worker->s->disablereuse + && worker->cp->addr) { + /* + * We got here because only conn->hostname was null. + * If we have a worker->cp->addr we are allowed to reuse it + * and hence save a DNS lookup. + */ + conn->addr = worker->cp->addr; + } + else { + err = apr_sockaddr_info_get(&(conn->addr), + conn->hostname, APR_UNSPEC, + conn->port, 0, + conn->pool); + } } } else if (!worker->cp->addr) {