Fix retry time value in dnsQueryEvent when perform DNS query over TCP
DNS queries over TCP can only be made once per server.
The retry time value of dnsQueryEvent on TCP should always be "0".
(Currently, it will populate the wrong value from the variable
"retryTimes".)
Bug: 147343838
Test: atest
Change-Id: I67b9602fcf9882e8035765e1598c16cf36bfb5e4
diff --git a/res_send.cpp b/res_send.cpp
index 66548bd..5b5fe10 100644
--- a/res_send.cpp
+++ b/res_send.cpp
@@ -506,6 +506,7 @@
const bool shouldRecordStats = (attempt == 0);
int resplen;
Stopwatch queryStopwatch;
+ int retry_count_for_event = 0;
if (useTcp) {
// TCP; at most one attempt per server.
attempt = retryTimes;
@@ -524,6 +525,7 @@
resplen = send_dg(statp, ¶ms, buf, buflen, ans, anssiz, &terrno, ns, &useTcp,
&gotsomewhere, &now, rcode, &delay);
fallbackTCP = useTcp ? true : false;
+ retry_count_for_event = attempt;
LOG(INFO) << __func__ << ": used send_dg " << resplen;
}
@@ -532,7 +534,7 @@
dnsQueryEvent->set_latency_micros(saturate_cast<int32_t>(queryStopwatch.timeTakenUs()));
dnsQueryEvent->set_dns_server_index(ns);
dnsQueryEvent->set_ip_version(ipFamilyToIPVersion(nsap->sa_family));
- dnsQueryEvent->set_retry_times(attempt);
+ dnsQueryEvent->set_retry_times(retry_count_for_event);
dnsQueryEvent->set_rcode(static_cast<NsRcode>(*rcode));
dnsQueryEvent->set_protocol(query_proto);
dnsQueryEvent->set_type(getQueryType(buf, buflen));