From 60a45aff31541f65d39e4c4e7824cd1ea5a1e84c Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Wed, 19 Aug 2009 11:45:32 -0700 Subject: Fix Wifi+Cell on boot after wifi in use. The gist of it is: Ignore reconnect fail of default APN during boot. A long path: 1 If wifi is started at boot it starts fast - before the PhoneService is available. 2 Wifi starts by failing - you get DISCONNECTED/Scanning events so CM starts the other default network (mobile). 3 Trying to restart mobile fails because the phone service isn't up yet. 4 The failure is noted and the net is marked as not-enabled. 5 The phone trys to auto-start the mobile network and succeeds, sending state-changed events 6 The CM ignores the state-changed events because the net isn't enabled (see 4). The long term fix is to remove two-way state tracking from the MobileDataStateTracker and instead just consume the state fed to us in state-change events. Near term fix is to not mark the default net disabled when we have failure (step 4) if the phone service isn't available. --- core/java/android/net/MobileDataStateTracker.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java index 85ee1cab7a5b..c5d6e11de1cd 100644 --- a/core/java/android/net/MobileDataStateTracker.java +++ b/core/java/android/net/MobileDataStateTracker.java @@ -316,6 +316,12 @@ public class MobileDataStateTracker extends NetworkStateTracker { // no need to do anything - we're already due some status update intents break; case Phone.APN_REQUEST_FAILED: + if (mPhoneService == null && mApnType == Phone.APN_TYPE_DEFAULT) { + // on startup we may try to talk to the phone before it's ready + // just leave mEnabled as it is for the default apn. + return false; + } + // else fall through case Phone.APN_TYPE_NOT_AVAILABLE: mEnabled = false; break; -- cgit v1.2.3-59-g8ed1b