Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e3ec79d authored by Danny Baumann's avatar Danny Baumann Committed by Ricardo Cerqueira
Browse files

Fix race condition in DNS resolving.

If the querying thread was faster than the DNS resolving thread startup,
resolving would crash with the following stacktrace:

FATAL EXCEPTION: WebViewCoreThread
E/AndroidRuntime(7160): java.lang.NullPointerException
E/AndroidRuntime(7160):      at android.webkit.DnsResolver.resolveDnsForHostMap(DnsResolver.java:187)
E/AndroidRuntime(7160):      at android.webkit.BrowserFrame.startDnsPrefetch(BrowserFrame.java:248)
E/AndroidRuntime(7160):      at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1400)
E/AndroidRuntime(7160):      at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(7160):      at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(7160):      at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:645)
E/AndroidRuntime(7160):      at java.lang.Thread.run(Thread.java:1019)
parent 26e7d83c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ final class DnsResolver {
    }

    private DnsResolver() {
        mHostNamesToBeResolved = new HashMap();
        createDnsResolverThreadPool();
    }

@@ -96,7 +97,6 @@ final class DnsResolver {
                Process.setThreadPriority( android.os.Process.THREAD_PRIORITY_DEFAULT +
                                           android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE);
                mDnsResolverThreadPool = Executors.newFixedThreadPool(MAX_DNS_RESOLVER_THREAD_POOL_SIZE);
                mHostNamesToBeResolved = new HashMap();
                boolean bResolvedPriorityHostNames = false;
                int dnsQueryCounter = 0;
                int numHosts = 0;