Subject: Re: [PATCH] c-ares: Add support for multiple DNS servers on Android

Re: [PATCH] c-ares: Add support for multiple DNS servers on Android

From: Guenter <lists_at_gknw.net>
Date: Thu, 19 Apr 2012 19:36:17 +0200

Hi Geert,
Am 19.04.2012 15:48, schrieb Geert Uytterhoeven:
> Before, c-ares always used the first DNS server on Android, causing
> network problems if this DNS server was not available.
>
> Signed-off-by: Geert Uytterhoeven<Geert.Uytterhoeven_at_sonycom.com>
> ---
> ares_init.c | 18 +++++++++++++++---
> 1 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/ares_init.c b/ares_init.c
> index a0bfc83..fa9e1d7 100644
> --- a/ares_init.c
> +++ b/ares_init.c
> @@ -62,6 +62,7 @@
>
> #if defined(ANDROID) || defined(__ANDROID__)
> #include<sys/system_properties.h>
> +#define MAX_DNS_PROPERTIES 8 /* From the Bionic sources */
> #endif
>
> #include "ares.h"
> @@ -953,11 +954,22 @@ DhcpNameServer
> status = ARES_EOF;
>
> #elif defined(ANDROID) || defined(__ANDROID__)
> + unsigned int i;
> + char name[PROP_NAME_MAX];
> char value[PROP_VALUE_MAX]="";
> - __system_property_get("net.dns1", value);
> - status = config_nameserver(&servers,&nservers, value);
> - if (status == ARES_SUCCESS)
> + int len;
> + for (i = 1; i<= MAX_DNS_PROPERTIES; i++) {
> + snprintf(name, sizeof(name), "net.dns%u", i);
> + len = __system_property_get(name, value);
> + if (len< 1) {
> + status = ARES_EOF;
> + break;
> + }
> + status = config_nameserver(&servers,&nservers, value);
> + if (status != ARES_SUCCESS)
> + break;
> status = ARES_EOF;
> + }
> #else
> {
> char *p;
thanks! Applied with 2c67ce6.

Gün.
Received on 2012-04-19