Bug 1424066 - Use RefPtr to hold nsHostResolver in nsHostResolver::ThreadFunc r=mayhemer draft
authorValentin Gosu <valentin.gosu@gmail.com>
Thu, 07 Dec 2017 22:53:42 +0100
changeset 709280 126e066b771b54d5a56d64b645bb60461f4478cd
parent 708706 4b94da21a9e6171f9911ffad171af23c26e6227b
child 709281 ad301dade016e9f7068794662586912d5f55b30d
child 709292 6d06b50c1fa2ba678a887b93f28e1e602e209da4
push id92598
push uservalentin.gosu@gmail.com
push dateThu, 07 Dec 2017 21:55:36 +0000
reviewersmayhemer
bugs1424066
milestone59.0a1
Bug 1424066 - Use RefPtr to hold nsHostResolver in nsHostResolver::ThreadFunc r=mayhemer MozReview-Commit-ID: CmKWJIq1SNy
netwerk/dns/nsHostResolver.cpp
--- a/netwerk/dns/nsHostResolver.cpp
+++ b/netwerk/dns/nsHostResolver.cpp
@@ -1468,17 +1468,17 @@ nsHostResolver::ThreadFunc(void *arg)
     nsCString name = naming.GetNextThreadName("DNS Resolver");
 
     AUTO_PROFILER_REGISTER_THREAD(name.BeginReading());
     NS_SetCurrentThreadName(name.BeginReading());
 
 #if defined(RES_RETRY_ON_FAILURE)
     nsResState rs;
 #endif
-    nsHostResolver *resolver = (nsHostResolver *)arg;
+    RefPtr<nsHostResolver> resolver = dont_AddRef((nsHostResolver *)arg);
     nsHostRecord *rec  = nullptr;
     AddrInfo *ai = nullptr;
 
     while (rec || resolver->GetHostToLookup(&rec)) {
         LOG(("DNS lookup thread - Calling getaddrinfo for host [%s%s%s].\n",
              LOG_HOST(rec->host, rec->netInterface)));
 
         TimeStamp startTime = TimeStamp::Now();
@@ -1532,17 +1532,17 @@ nsHostResolver::ThreadFunc(void *arg)
             // leave 'rec' assigned and loop to make a renewed host resolve
             LOG(("DNS lookup thread - Re-resolving host [%s%s%s].\n",
                  LOG_HOST(rec->host, rec->netInterface)));
         } else {
             rec = nullptr;
         }
     }
     resolver->mThreadCount--;
-    NS_RELEASE(resolver);
+    resolver = nullptr;
     LOG(("DNS lookup thread - queue empty, thread finished.\n"));
 }
 
 nsresult
 nsHostResolver::Create(uint32_t maxCacheEntries,
                        uint32_t defaultCacheEntryLifetime,
                        uint32_t defaultGracePeriod,
                        nsHostResolver **result)