From 2a4fd5b529880972db91f8b4e2363e5f30b3c9f1 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 4 Oct 2016 07:55:15 +0000 Subject: [PATCH] [ADNS][DNSAPI] Fix a local resolving regression that led to some browsers crashing after startup. By Peter Hater. CORE-12072 CORE-12088 svn path=/trunk/; revision=72898 --- reactos/dll/win32/dnsapi/dnsapi/query.c | 12 ++++++------ reactos/sdk/lib/3rdparty/adns/src/setup.c | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/reactos/dll/win32/dnsapi/dnsapi/query.c b/reactos/dll/win32/dnsapi/dnsapi/query.c index 29a4a9c7990..7044fa04b18 100644 --- a/reactos/dll/win32/dnsapi/dnsapi/query.c +++ b/reactos/dll/win32/dnsapi/dnsapi/query.c @@ -771,6 +771,12 @@ DnsQuery_W(LPCWSTR Name, } adns_error = adns_init(&astate, adns_if_noenv | adns_if_noerrprint | adns_if_noserverwarn, 0); + if (adns_error != adns_s_ok) + { + RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiName); + RtlFreeHeap(RtlGetProcessHeap(), 0, network_info); + return DnsIntTranslateAdnsToDNS_STATUS(adns_error); + } for (pip = &(network_info->DnsServerList); pip; pip = pip->Next) { addr.s_addr = inet_addr(pip->IpAddress.String); @@ -783,12 +789,6 @@ DnsQuery_W(LPCWSTR Name, } RtlFreeHeap(RtlGetProcessHeap(), 0, network_info); - if (adns_error != adns_s_ok) - { - RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiName); - return DnsIntTranslateAdnsToDNS_STATUS(adns_error); - } - if (Servers) { for (i = 0; i < Servers->AddrCount; i++) diff --git a/reactos/sdk/lib/3rdparty/adns/src/setup.c b/reactos/sdk/lib/3rdparty/adns/src/setup.c index e70b46a4a59..906d2bcce49 100644 --- a/reactos/sdk/lib/3rdparty/adns/src/setup.c +++ b/reactos/sdk/lib/3rdparty/adns/src/setup.c @@ -521,17 +521,18 @@ static int init_begin(adns_state *ads_r, adns_initflags flags, FILE *diagfile) { } static int init_finish(adns_state ads) { - struct in_addr ia; struct protoent *proto; int r; - +/* Don't add loopback on ReactOS it slows down queries to non existent server */ +#ifndef __REACTOS__ + struct in_addr ia; if (!ads->nservers) { if (ads->diagfile && ads->iflags & adns_if_debug) fprintf(ads->diagfile,"adns: no nameservers, using localhost\n"); ia.s_addr= htonl(INADDR_LOOPBACK); addserver(ads,ia); } - +#endif proto= getprotobyname("udp"); if (!proto) { r= ENOPROTOOPT; goto x_free; } ADNS_CLEAR_ERRNO; ads->udpsocket= socket(AF_INET,SOCK_DGRAM,proto->p_proto); -- 2.17.1