Addressed the review
[comment](https://github.com/apache/trafficserver/pull/4145#discussion_r217209175)
by moving the logic lower in the method but leaving it unchanged.
Here is the diff:
```Diff
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 950501ef8..7c0e933d1 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -1607,37 +1607,6 @@ HttpTransact::OSDNSLookup(State *s)
ink_assert(s->dns_info.lookup_success);
TxnDebug("http_seq", "[HttpTransact::OSDNSLookup] DNS Lookup successful");
- if (s->redirect_info.redirect_in_process) {
- // If dns lookup was not successful, the code below will handle the error.
- RedirectEnabled::Action action = RedirectEnabled::Action::INVALID;
- if (true == Machine::instance()->is_self(s->host_db_info.ip())) {
- action = s->http_config_param->redirect_actions_self_action;
- } else {
- ink_release_assert(s->http_config_param->redirect_actions_map !=
nullptr);
- ink_release_assert(
-
s->http_config_param->redirect_actions_map->contains(s->host_db_info.ip(),
reinterpret_cast<void **>(&action)));
- }
- switch (action) {
- case RedirectEnabled::Action::FOLLOW:
- TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Following");
- break;
- case RedirectEnabled::Action::REJECT:
- TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Rejecting.");
- build_error_response(s, HTTP_STATUS_FORBIDDEN, nullptr,
"request#syntax_error");
- SET_VIA_STRING(VIA_DETAIL_TUNNEL, VIA_DETAIL_TUNNEL_NO_FORWARD);
- TRANSACT_RETURN(SM_ACTION_SEND_ERROR_CACHE_NOOP, nullptr);
- break;
- case RedirectEnabled::Action::RETURN:
- TxnDebug("http_trans", "[OSDNSLookup] Configured to return on invalid
redirect address.");
- // fall-through
- default:
- // Return this 3xx to the client as-is.
- TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Returning.");
- build_response_copy(s, &s->hdr_info.server_response,
&s->hdr_info.client_response, s->client_info.http_version);
- TRANSACT_RETURN(SM_ACTION_INTERNAL_CACHE_NOOP, nullptr);
- }
- }
-
if (DNSLookupInfo::OS_Addr::OS_ADDR_TRY_HOSTDB == s->dns_info.os_addr_style)
{
// We've backed off from a client supplied address and found some
// HostDB addresses. We use those if they're different from the CTA.
@@ -1678,6 +1647,37 @@ HttpTransact::OSDNSLookup(State *s)
"IP: %s",
ats_ip_ntop(&s->server_info.dst_addr.sa, addrbuf, sizeof(addrbuf)));
+ if (s->redirect_info.redirect_in_process) {
+ // If dns lookup was not successful, the code below will handle the error.
+ RedirectEnabled::Action action = RedirectEnabled::Action::INVALID;
+ if (true == Machine::instance()->is_self(s->host_db_info.ip())) {
+ action = s->http_config_param->redirect_actions_self_action;
+ } else {
+ ink_release_assert(s->http_config_param->redirect_actions_map !=
nullptr);
+ ink_release_assert(
+
s->http_config_param->redirect_actions_map->contains(s->host_db_info.ip(),
reinterpret_cast<void **>(&action)));
+ }
+ switch (action) {
+ case RedirectEnabled::Action::FOLLOW:
+ TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Following");
+ break;
+ case RedirectEnabled::Action::REJECT:
+ TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Rejecting.");
+ build_error_response(s, HTTP_STATUS_FORBIDDEN, nullptr,
"request#syntax_error");
+ SET_VIA_STRING(VIA_DETAIL_TUNNEL, VIA_DETAIL_TUNNEL_NO_FORWARD);
+ TRANSACT_RETURN(SM_ACTION_SEND_ERROR_CACHE_NOOP, nullptr);
+ break;
+ case RedirectEnabled::Action::RETURN:
+ TxnDebug("http_trans", "[OSDNSLookup] Configured to return on invalid
redirect address.");
+ // fall-through
+ default:
+ // Return this 3xx to the client as-is.
+ TxnDebug("http_trans", "[OSDNSLookup] Invalid redirect address.
Returning.");
+ build_response_copy(s, &s->hdr_info.server_response,
&s->hdr_info.client_response, s->client_info.http_version);
+ TRANSACT_RETURN(SM_ACTION_INTERNAL_CACHE_NOOP, nullptr);
+ }
+ }
+
// so the dns lookup was a success, but the lookup succeeded on
// a hostname which was expanded by the traffic server. we should
// not automatically forward the request to this expanded hostname.
```
Branch has been squashed. Previous commit was
bb21f28088861bbf02856514b4d2dfdeb6e921cd.
[ Full content available at: https://github.com/apache/trafficserver/pull/4145 ]
This message was relayed via gitbox.apache.org for [email protected]