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, &params, stats);
+    bool usable_servers[MAXNS];
+    android_net_res_stats_get_usable_servers(&params, 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, &params, stats);
-        bool usable_servers[MAXNS];
-        android_net_res_stats_get_usable_servers(&params, stats, statp->nscount, usable_servers);
 
         for (int ns = 0; ns < statp->nscount; ns++) {
             if (!usable_servers[ns]) continue;