summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2012-05-31 14:52:10 +0200
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-06-07 02:57:17 +0100
commit7e3ec79dbdbdbd44bd00dddd935c6f43de6d5106 (patch)
tree0c678367989d01b6ba1959500b3c6725e1f3b309
parent26e7d83cb29bc7dde484860c525b4875f9f2f7bd (diff)
downloadframeworks_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.java2
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;