From 0fe3f7cbbf769b80cd5ee549bbd0f7723f4d9312 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Fri, 8 Jan 2010 09:36:04 -0800 Subject: [PATCH] DO NOT MERGE Avoid wifi disable in a UNKNOWN state Multiple broadcast receiver unregister calls cause exception. Bug: 2361335 --- services/java/com/android/server/WifiService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java index b29e7693ffae4..3a08e4d2cbfbc 100644 --- a/services/java/com/android/server/WifiService.java +++ b/services/java/com/android/server/WifiService.java @@ -329,6 +329,17 @@ public class WifiService extends IWifiManager.Stub { return false; } + /** + * Multiple calls to unregisterReceiver() cause exception and a system crash. + * This can happen if a supplicant is lost (or firmware crash occurs) and user indicates + * disable wifi at the same time. + * Avoid doing a disable when the current Wifi state is UNKNOWN + * TODO: Handle driver load fail and supplicant lost as seperate states + */ + if (mWifiState == WIFI_STATE_UNKNOWN && !enable) { + return false; + } + setWifiEnabledState(enable ? WIFI_STATE_ENABLING : WIFI_STATE_DISABLING, uid); if (enable) {