summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2011-11-02 21:28:33 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2011-11-02 21:28:33 +0000
commit4a113251078ad028d1a071ebf5562185275c7039 (patch)
tree2dc3bfa51057b599ace65f15d9d58d97427d34ac /services
parent42774decd903d0bbd1c57c9aa829719f2a683231 (diff)
parent451fa13e82ea1226895b41282fdb33bf9fea5d19 (diff)
downloadframeworks_base-4a113251078ad028d1a071ebf5562185275c7039.zip
frameworks_base-4a113251078ad028d1a071ebf5562185275c7039.tar.gz
frameworks_base-4a113251078ad028d1a071ebf5562185275c7039.tar.bz2
am 451fa13e: Merge "Ignore errors when untethering" into ics-mr0
* commit '451fa13e82ea1226895b41282fdb33bf9fea5d19': Ignore errors when untethering
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/connectivity/Tethering.java79
1 files changed, 27 insertions, 52 deletions
diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java
index 1107fe9..7bd29d9 100644
--- a/services/java/com/android/server/connectivity/Tethering.java
+++ b/services/java/com/android/server/connectivity/Tethering.java
@@ -73,7 +73,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
private Context mContext;
private final static String TAG = "Tethering";
private final static boolean DBG = true;
- private final static boolean VDBG = false;
+ private final static boolean VDBG = true;
// TODO - remove both of these - should be part of interface inspection/selection stuff
private String[] mTetherableUsbRegexs;
@@ -920,6 +920,29 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
setTethered(true);
sendTetherStateChangedBroadcast();
}
+
+ void cleanupUpstream() {
+ if (mMyUpstreamIfaceName != null) {
+ // note that we don't care about errors here.
+ // sometimes interfaces are gone before we get
+ // to remove their rules, which generates errors.
+ // just do the best we can.
+ try {
+ // about to tear down NAT; gather remaining statistics
+ mStatsService.forceUpdate();
+ } catch (Exception e) {
+ if (VDBG) Log.e(TAG, "Exception in forceUpdate: " + e.toString());
+ }
+ try {
+ mNMService.disableNat(mIfaceName, mMyUpstreamIfaceName);
+ } catch (Exception e) {
+ if (VDBG) Log.e(TAG, "Exception in disableNat: " + e.toString());
+ }
+ mMyUpstreamIfaceName = null;
+ }
+ return;
+ }
+
@Override
public boolean processMessage(Message message) {
if (VDBG) Log.d(TAG, "TetheredState.processMessage what=" + message.what);
@@ -928,23 +951,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
switch (message.what) {
case CMD_TETHER_UNREQUESTED:
case CMD_INTERFACE_DOWN:
- if (mMyUpstreamIfaceName != null) {
- try {
- // about to tear down NAT; gather remaining statistics
- mStatsService.forceUpdate();
-
- mNMService.disableNat(mIfaceName, mMyUpstreamIfaceName);
- mMyUpstreamIfaceName = null;
- } catch (Exception e) {
- try {
- mNMService.untetherInterface(mIfaceName);
- } catch (Exception ee) {}
-
- setLastErrorAndTransitionToInitialState(
- ConnectivityManager.TETHER_ERROR_DISABLE_NAT_ERROR);
- break;
- }
- }
+ cleanupUpstream();
try {
mNMService.untetherInterface(mIfaceName);
} catch (Exception e) {
@@ -975,23 +982,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
if (VDBG) Log.d(TAG, "Connection changed noop - dropping");
break;
}
- if (mMyUpstreamIfaceName != null) {
- try {
- // about to tear down NAT; gather remaining statistics
- mStatsService.forceUpdate();
-
- mNMService.disableNat(mIfaceName, mMyUpstreamIfaceName);
- mMyUpstreamIfaceName = null;
- } catch (Exception e) {
- try {
- mNMService.untetherInterface(mIfaceName);
- } catch (Exception ee) {}
-
- setLastErrorAndTransitionToInitialState(
- ConnectivityManager.TETHER_ERROR_DISABLE_NAT_ERROR);
- break;
- }
- }
+ cleanupUpstream();
if (newUpstreamIfaceName != null) {
try {
mNMService.enableNat(mIfaceName, newUpstreamIfaceName);
@@ -1016,23 +1007,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
error = true;
// fall through
case CMD_TETHER_MODE_DEAD:
- if (mMyUpstreamIfaceName != null) {
- try {
- // about to tear down NAT; gather remaining statistics
- mStatsService.forceUpdate();
-
- mNMService.disableNat(mIfaceName, mMyUpstreamIfaceName);
- mMyUpstreamIfaceName = null;
- } catch (Exception e) {
- try {
- mNMService.untetherInterface(mIfaceName);
- } catch (Exception ee) {}
-
- setLastErrorAndTransitionToInitialState(
- ConnectivityManager.TETHER_ERROR_DISABLE_NAT_ERROR);
- break;
- }
- }
+ cleanupUpstream();
try {
mNMService.untetherInterface(mIfaceName);
} catch (Exception e) {