From aa583bd8ce5f1a112baec4a4b95729db3bb4c931 Mon Sep 17 00:00:00 2001 From: Kevin Bracey Date: Mon, 31 Oct 2016 10:45:18 +0200 Subject: [PATCH] nsapi_dns: Provide 2 IPv6-hosted default servers Replace Comodo and OpenDNS IPv4 servers with Google and DNS.WATCH IPv6 servers, so IPv6-only devices (eg 6LoWPAN) have a default. 3 IPv4 resolvers should be plenty - existing code doesn't remember which one last worked, so if early list entries were unreachable performance would be consistently bad anyway. Replacing two entries avoids increasing image size and RAM consumption. On an IPv6-only or IPv4-only system, the sendto() for the wrong type of address should fail immediately - change loop to move on to the next server for any sendto() error. --- features/netsocket/nsapi_dns.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/features/netsocket/nsapi_dns.cpp b/features/netsocket/nsapi_dns.cpp index 118a71ae8f7..2b0bd0ea119 100644 --- a/features/netsocket/nsapi_dns.cpp +++ b/features/netsocket/nsapi_dns.cpp @@ -31,11 +31,13 @@ #define DNS_SERVERS_SIZE 5 nsapi_addr_t dns_servers[DNS_SERVERS_SIZE] = { - {NSAPI_IPv4, {8, 8, 8, 8}}, - {NSAPI_IPv4, {209, 244, 0, 3}}, - {NSAPI_IPv4, {84, 200, 69, 80}}, - {NSAPI_IPv4, {8, 26, 56, 26}}, - {NSAPI_IPv4, {208, 67, 222, 222}}, + {NSAPI_IPv4, {8, 8, 8, 8}}, // Google + {NSAPI_IPv4, {209, 244, 0, 3}}, // Level 3 + {NSAPI_IPv4, {84, 200, 69, 80}}, // DNS.WATCH + {NSAPI_IPv6, {0x20,0x01, 0x48,0x60, 0x48,0x60, 0,0, // Google + 0,0, 0,0, 0,0, 0x88,0x88}}, + {NSAPI_IPv6, {0x20,0x01, 0x16,0x08, 0,0x10, 0,0x25, // DNS.WATCH + 0,0, 0,0, 0x1c,0x04, 0xb1,0x2f}}, }; // DNS server configuration @@ -226,11 +228,9 @@ static int nsapi_dns_query_multiple(NetworkStack *stack, const char *host, dns_append_question(&question, host, version); err = socket.sendto(SocketAddress(dns_servers[i], 53), packet, DNS_BUFFER_SIZE); - if (err == NSAPI_ERROR_WOULD_BLOCK) { + // send may fail for various reasons, including wrong address type - move on + if (err < 0) { continue; - } else if (err < 0) { - result = err; - break; } // recv the response