From adfb0d0cf1fed4b42e65fb35cdc342ab99e9c6a5 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Thu, 14 Jun 2012 15:50:32 -0700 Subject: [PATCH] Make tethering ignore bad inputs Tethering was re-evaluating everything on any connectivity change. This was causing problems when mobile data was not available as each re-eval was again requesting a connection which would fail and loop. Ignore FAILED states to break this cycle in a minimal change. bug:6668233 Change-Id: Ia1dfc6abff1fe464e9501b50185cdb8d0fbb7ff6 --- .../java/com/android/server/connectivity/Tethering.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java index 8919a11b6b76a..00832eefdd10d 100644 --- a/services/java/com/android/server/connectivity/Tethering.java +++ b/services/java/com/android/server/connectivity/Tethering.java @@ -500,8 +500,13 @@ public class Tethering extends INetworkManagementEventObserver.Stub { mUsbTetherRequested = false; } } else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { - if (VDBG) Log.d(TAG, "Tethering got CONNECTIVITY_ACTION"); - mTetherMasterSM.sendMessage(TetherMasterSM.CMD_UPSTREAM_CHANGED); + NetworkInfo networkInfo = (NetworkInfo)intent.getParcelableExtra( + ConnectivityManager.EXTRA_NETWORK_INFO); + if (networkInfo != null && + networkInfo.getDetailedState() != NetworkInfo.DetailedState.FAILED) { + if (VDBG) Log.d(TAG, "Tethering got CONNECTIVITY_ACTION"); + mTetherMasterSM.sendMessage(TetherMasterSM.CMD_UPSTREAM_CHANGED); + } } } }