diff options
author | Danny Baumann <dannybaumann@web.de> | 2012-05-31 14:52:10 +0200 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-06-07 02:57:17 +0100 |
commit | 7e3ec79dbdbdbd44bd00dddd935c6f43de6d5106 (patch) | |
tree | 0c678367989d01b6ba1959500b3c6725e1f3b309 | |
parent | 26e7d83cb29bc7dde484860c525b4875f9f2f7bd (diff) | |
download | frameworks_base-7e3ec79dbdbdbd44bd00dddd935c6f43de6d5106.zip frameworks_base-7e3ec79dbdbdbd44bd00dddd935c6f43de6d5106.tar.gz frameworks_base-7e3ec79dbdbdbd44bd00dddd935c6f43de6d5106.tar.bz2 |
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)
-rw-r--r-- | core/java/android/webkit/DnsResolver.java | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/core/java/android/webkit/DnsResolver.java b/core/java/android/webkit/DnsResolver.java index 056f911..b2ca851 100644 --- a/core/java/android/webkit/DnsResolver.java +++ b/core/java/android/webkit/DnsResolver.java @@ -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;
|