summaryrefslogtreecommitdiff
path: root/services/net/java
diff options
context:
space:
mode:
authorRemi NGUYEN VAN <reminv@google.com>2019-06-25 01:33:52 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-06-25 01:33:52 -0700
commitfe1ad3d0b86e1315906e18e33b65df2481eea63d (patch)
treec6ab618a4831b29f6f0b805d17a2d7ce46d11f4d /services/net/java
parent59d2379e8a2b2ae869c4971519f598d263a555ac (diff)
parent7afb36786cc4168c842ee51abff48071498ef617 (diff)
Merge "Fix leak of DhcpServer on tethering stop error" am: 7e5a5a6983
am: 7afb36786c Change-Id: Ie73481e8d91ce43e4939f8c31a9ce431e382c6d9
Diffstat (limited to 'services/net/java')
-rw-r--r--services/net/java/android/net/ip/IpServer.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/services/net/java/android/net/ip/IpServer.java b/services/net/java/android/net/ip/IpServer.java
index 66884c60b0bc..6a6a1307723e 100644
--- a/services/net/java/android/net/ip/IpServer.java
+++ b/services/net/java/android/net/ip/IpServer.java
@@ -433,6 +433,9 @@ public class IpServer extends StateMachine {
}
}
ifcg.clearFlag("running");
+
+ // TODO: this may throw if the interface is already gone. Do proper handling and
+ // simplify the DHCP server start/stop.
mNMService.setInterfaceConfig(mIfaceName, ifcg);
if (!configureDhcp(enabled, (Inet4Address) addr, prefixLen)) {
@@ -440,6 +443,14 @@ public class IpServer extends StateMachine {
}
} catch (Exception e) {
mLog.e("Error configuring interface " + e);
+ if (!enabled) {
+ try {
+ // Calling stopDhcp several times is fine
+ stopDhcp();
+ } catch (Exception dhcpError) {
+ mLog.e("Error stopping DHCP", dhcpError);
+ }
+ }
return false;
}