diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc index d25cb376fa7..2eb1c89f4a5 100644 --- a/proxy/http/HttpTransact.cc +++ b/proxy/http/HttpTransact.cc @@ -48,6 +48,11 @@ #include "../IPAllow.h" #include "I_Machine.h" +namespace +{ +char const Dns_error_body[] = "connect#dns_failed"; +} + // Support ip_resolve override. const MgmtConverter HttpTransact::HOST_RES_CONV{[](const void *data) -> std::string_view { const HostResData *host_res_data = static_cast(data); @@ -1899,7 +1904,7 @@ HttpTransact::ReDNSRoundRobin(State *s) } else { // Our ReDNS failed so output the DNS failure error message // Set to internal server error so later logging will pick up SQUID_LOG_ERR_DNS_FAIL - build_error_response(s, HTTP_STATUS_INTERNAL_SERVER_ERROR, "Cannot find server.", "connect#dns_failed"); + build_error_response(s, HTTP_STATUS_INTERNAL_SERVER_ERROR, "Cannot find server.", Dns_error_body); s->cache_info.action = CACHE_DO_NO_ACTION; s->next_action = SM_ACTION_SEND_ERROR_CACHE_NOOP; // s->next_action = PROXY_INTERNAL_CACHE_NOOP; @@ -8144,7 +8149,11 @@ HttpTransact::build_error_response(State *s, HTTPStatus status_code, const char SET_VIA_STRING(VIA_ERROR_TYPE, VIA_ERROR_SERVER); break; case HTTP_STATUS_INTERNAL_SERVER_ERROR: - SET_VIA_STRING(VIA_ERROR_TYPE, VIA_ERROR_DNS_FAILURE); + if (Dns_error_body == error_body_type) { + SET_VIA_STRING(VIA_ERROR_TYPE, VIA_ERROR_DNS_FAILURE); + } else { + SET_VIA_STRING(VIA_ERROR_TYPE, VIA_ERROR_UNKNOWN); + } break; case HTTP_STATUS_MOVED_TEMPORARILY: SET_VIA_STRING(VIA_ERROR_TYPE, VIA_ERROR_MOVED_TEMPORARILY); diff --git a/proxy/http/HttpTransact.h b/proxy/http/HttpTransact.h index 4e97b6dbe12..58e7abfc079 100644 --- a/proxy/http/HttpTransact.h +++ b/proxy/http/HttpTransact.h @@ -154,6 +154,7 @@ enum ViaString_t { VIA_ERROR_CACHE_READ = 'R', VIA_ERROR_MOVED_TEMPORARILY = 'M', VIA_ERROR_LOOP_DETECTED = 'L', + VIA_ERROR_UNKNOWN = ' ', // // Now the detailed stuff // diff --git a/proxy/http/HttpTransactHeaders.cc b/proxy/http/HttpTransactHeaders.cc index f7550d61cab..0064a9f5e90 100644 --- a/proxy/http/HttpTransactHeaders.cc +++ b/proxy/http/HttpTransactHeaders.cc @@ -601,6 +601,10 @@ HttpTransactHeaders::generate_and_set_squid_codes(HTTPHdr *header, char *via_str log_code = SQUID_LOG_ERR_LOOP_DETECTED; hier_code = SQUID_HIER_NONE; break; + case VIA_ERROR_UNKNOWN: + log_code = SQUID_LOG_ERR_UNKNOWN; + hier_code = SQUID_HIER_NONE; + break; default: break; }