summaryrefslogtreecommitdiffstats
path: root/net/base/dnsrr_resolver.cc
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 17:15:42 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 17:15:42 +0000
commitbb268a6f7560ed68ff67bb162b1f528012164fbe (patch)
tree3eecb063a9daca8dcbc49e14c53fe4c71707e134 /net/base/dnsrr_resolver.cc
parent450d456279e6ac4b023a573843b504ee9f27f1aa (diff)
downloadchromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.zip
chromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.tar.gz
chromium_src-bb268a6f7560ed68ff67bb162b1f528012164fbe.tar.bz2
net: replicate r62288 in DnsRRResolver
When _res is uninitialized, res_nclose may end up closing fd 0. Test whether it's initialized before closing. Patch by Jim Deng. TBR=evanm Original review URL: http://codereview.chromium.org/3717002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62292 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/dnsrr_resolver.cc')
-rw-r--r--net/base/dnsrr_resolver.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/base/dnsrr_resolver.cc b/net/base/dnsrr_resolver.cc
index cd63bc6..0a30d77 100644
--- a/net/base/dnsrr_resolver.cc
+++ b/net/base/dnsrr_resolver.cc
@@ -181,7 +181,11 @@ class RRResolverWorker {
#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
if (!r && DnsReloadTimerHasExpired()) {
- res_nclose(&_res);
+ // When there's no network connection, _res may not be initialized by
+ // getaddrinfo. Therefore, we call res_nclose only when there are ns
+ // entries.
+ if (_res.nscount > 0)
+ res_nclose(&_res);
if (res_ninit(&_res) == 0)
r = Do();
}