Add RESOLVER_PARAMS_RETRY_COUNT for configuring the retries.
Test: built / flashed / booted
netd_unit_test, netd_integration_test, libnetd_resolv_test
Change-Id: I68db331b3c8ad8e43696816642f4d5941138c8bc
diff --git a/resolv/res_send.cpp b/resolv/res_send.cpp
index 06cdb5b..0f048b4 100644
--- a/resolv/res_send.cpp
+++ b/resolv/res_send.cpp
@@ -506,17 +506,19 @@
statp->_u._ext.nstimes[lastns] = nstime;
}
+ struct res_stats stats[MAXNS];
+ struct __res_params params;
+ int revision_id = resolv_cache_get_resolver_stats(statp->netid, ¶ms, stats);
+ bool usable_servers[MAXNS];
+ android_net_res_stats_get_usable_servers(¶ms, stats, statp->nscount, usable_servers);
+ if (params.retry_count != 0) statp->retry = params.retry_count;
+
/*
* Send request, RETRY times, or until successful.
*/
int retryTimes = (flags & ANDROID_RESOLV_NO_RETRY) ? 1 : statp->retry;
for (int attempt = 0; attempt < retryTimes; ++attempt) {
- struct res_stats stats[MAXNS];
- struct __res_params params;
- int revision_id = resolv_cache_get_resolver_stats(statp->netid, ¶ms, stats);
- bool usable_servers[MAXNS];
- android_net_res_stats_get_usable_servers(¶ms, stats, statp->nscount, usable_servers);
for (int ns = 0; ns < statp->nscount; ns++) {
if (!usable_servers[ns]) continue;