{
int server_port;
apr_status_t err = APR_SUCCESS;
- const char *hostname;
- apr_port_t port;
/*
* Break up the URL to determine the host to connect to
uri->fragment ? "#" : "",
uri->fragment ? uri->fragment : "", NULL);
}
- if (!conn->hostname) {
+ if (!worker->is_address_reusable) {
if (proxyname) {
- conn->hostname = apr_pstrdup(conn->pool, proxyname);
+ conn->hostname = proxyname;
conn->port = proxyport;
} else {
- conn->hostname = apr_pstrdup(conn->pool, uri->hostname);
+ conn->hostname = uri->hostname;
conn->port = uri->port;
}
}
- if (!worker->is_address_reusable) {
+ else if (!conn->hostname) {
if (proxyname) {
- hostname = proxyname;
- port = proxyport;
+ conn->hostname = apr_pstrdup(conn->pool, proxyname);
+ conn->port = proxyport;
} else {
- hostname = uri->hostname;
- port = uri->port;
+ conn->hostname = apr_pstrdup(conn->pool, uri->hostname);
+ conn->port = uri->port;
}
}
- else {
- hostname = conn->hostname;
- port = conn->port;
- }
/* TODO: add address cache for forward proxies */
if (r->proxyreq == PROXYREQ_PROXY || r->proxyreq == PROXYREQ_REVERSE ||
!worker->is_address_reusable) {
err = apr_sockaddr_info_get(&(conn->addr),
- hostname, APR_UNSPEC,
- port, 0,
+ conn->hostname, APR_UNSPEC,
+ conn->port, 0,
conn->pool);
}
else if (!worker->cp->addr) {
* inside dynamic config to force the lookup.
*/
err = apr_sockaddr_info_get(&(worker->cp->addr),
- hostname, APR_UNSPEC,
- port, 0,
+ conn->hostname, APR_UNSPEC,
+ conn->port, 0,
worker->cp->pool);
conn->addr = worker->cp->addr;
PROXY_THREAD_UNLOCK(worker);
if (err != APR_SUCCESS) {
return ap_proxyerror(r, HTTP_BAD_GATEWAY,
apr_pstrcat(p, "DNS lookup failure for: ",
- hostname, NULL));
+ conn->hostname, NULL));
}
/* Get the server port for the Via headers */
return ap_proxyerror(r, HTTP_FORBIDDEN,
"Connect to remote machine blocked");
}
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
+ "proxy: connected %s to %s:%d", *url, conn->hostname,
+ conn->port);
return OK;
}