http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6a56fd27/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 1de4acc..a978548 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -3935,14 +3935,18 @@ HttpSM::do_hostdb_lookup()
} else { /* we aren't using SRV stuff... */
DebugSM("http_seq", "[HttpSM::do_hostdb_lookup] Doing DNS Lookup");
+ // If there is not a current server, we must be looking up the origin
+ // server at the beginning of the transaction
+ int server_port = t_state.current.server ? t_state.current.server->port :
t_state.server_info.port;
+
if (t_state.api_txn_dns_timeout_value != -1) {
DebugSM("http_timeout", "beginning DNS lookup. allowing %d mseconds for
DNS lookup", t_state.api_txn_dns_timeout_value);
}
HostDBProcessor::Options opt;
-
- opt.flags = (t_state.cache_info.directives.does_client_permit_dns_storing)
? HostDBProcessor::HOSTDB_DO_NOT_FORCE_DNS :
-
HostDBProcessor::HOSTDB_FORCE_DNS_RELOAD;
+ opt.port = server_port;
+opt.flags = (t_state.cache_info.directives.does_client_permit_dns_storing) ?
HostDBProcessor::HOSTDB_DO_NOT_FORCE_DNS :
+
HostDBProcessor::HOSTDB_FORCE_DNS_RELOAD;
opt.timeout = (t_state.api_txn_dns_timeout_value != -1) ?
t_state.api_txn_dns_timeout_value : 0;
opt.host_res_style = ua_session->host_res_style;