diff options
author | Irfan Sheriff <isheriff@google.com> | 2010-12-03 09:59:07 -0800 |
---|---|---|
committer | Irfan Sheriff <isheriff@google.com> | 2010-12-03 09:59:07 -0800 |
commit | d69f649eaf265ecee75757f34bb83b6068968e3d (patch) | |
tree | 338481f8343339ad2641fb3dc1fe1b40ca14afd5 /wifi/java/android/net | |
parent | 3591bebd5957a8547fc54659179a19440636e7f9 (diff) | |
download | frameworks_base-d69f649eaf265ecee75757f34bb83b6068968e3d.zip frameworks_base-d69f649eaf265ecee75757f34bb83b6068968e3d.tar.gz frameworks_base-d69f649eaf265ecee75757f34bb83b6068968e3d.tar.bz2 |
DO NOT MERGE Avoid nullifying dhcp target
A race condition causes an NPE on mDhcpTarget. The safest change is
to avoid nullifying it. A dummy call to remove messages
on a handler whose looper is quit should do no harm.
Bug: 3191203
Change-Id: I7613a5add873ce9512e9719cb2dc8da61255370e
Diffstat (limited to 'wifi/java/android/net')
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateTracker.java | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java index 5540174..27e6a72 100644 --- a/wifi/java/android/net/wifi/WifiStateTracker.java +++ b/wifi/java/android/net/wifi/WifiStateTracker.java @@ -933,10 +933,8 @@ public class WifiStateTracker extends NetworkStateTracker { resetConnections(true); } // When supplicant dies, kill the DHCP thread - if (mDhcpTarget != null) { - mDhcpTarget.getLooper().quit(); - mDhcpTarget = null; - } + mDhcpTarget.getLooper().quit(); + mContext.removeStickyBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)); if (ActivityManagerNative.isSystemReady()) { intent = new Intent(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); @@ -1407,10 +1405,9 @@ public class WifiStateTracker extends NetworkStateTracker { NetworkUtils.resetConnections(mInterfaceName); // Stop DHCP - if (mDhcpTarget != null) { - mDhcpTarget.setCancelCallback(true); - mDhcpTarget.removeMessages(EVENT_DHCP_START); - } + mDhcpTarget.setCancelCallback(true); + mDhcpTarget.removeMessages(EVENT_DHCP_START); + if (!NetworkUtils.stopDhcp(mInterfaceName)) { Log.e(TAG, "Could not stop DHCP"); } |