am a9c5bb97: Merge "Fix the detection of alt-network in dns resolver."
* commit 'a9c5bb972df7cbb4e65cfb53673b26f9d42deacd': Fix the detection of alt-network in dns resolver.
This commit is contained in:
commit
662bb875e4
@ -93,6 +93,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include "resolv_private.h"
|
#include "resolv_private.h"
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -1864,17 +1865,19 @@ error:
|
|||||||
free(elems);
|
free(elems);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _using_alt_dns()
|
static bool _using_default_dns(const char *iface)
|
||||||
{
|
{
|
||||||
char propname[PROP_NAME_MAX];
|
char buf[IF_NAMESIZE+1];
|
||||||
char propvalue[PROP_VALUE_MAX];
|
size_t if_len;
|
||||||
|
|
||||||
propvalue[0] = 0;
|
// common case
|
||||||
snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
|
if (iface == NULL || *iface == '\0') return true;
|
||||||
if (__system_property_get(propname, propvalue) > 0 ) {
|
|
||||||
return 1;
|
if_len = _resolv_get_default_iface(buf, sizeof(buf));
|
||||||
|
if (if_len + 1 <= sizeof(buf)) {
|
||||||
|
if (strcmp(buf, iface) != 0) return false;
|
||||||
}
|
}
|
||||||
return 0;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
@ -1926,7 +1929,7 @@ _dns_getaddrinfo(void *rv, void *cb_data, va_list ap)
|
|||||||
// Only implement AI_ADDRCONFIG if the application is not
|
// Only implement AI_ADDRCONFIG if the application is not
|
||||||
// using its own DNS servers, since our implementation
|
// using its own DNS servers, since our implementation
|
||||||
// only works on the default connection.
|
// only works on the default connection.
|
||||||
if (!_using_alt_dns()) {
|
if (_using_default_dns(iface)) {
|
||||||
query_ipv6 = _have_ipv6();
|
query_ipv6 = _have_ipv6();
|
||||||
query_ipv4 = _have_ipv4();
|
query_ipv4 = _have_ipv4();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user