From 38ddeaa67e52810da5db42895edb74b79111ec53 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 8 Nov 2011 13:04:22 -0800 Subject: [PATCH] Avoid inconsistent state when remove fails. Bug: 5433432 Change-Id: Ia388fda006cbda09b5947fc61cec6353f75a3805 --- .../java/com/android/server/NetworkManagementService.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index 6887de32e1120..da960aeae5e3a 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -1136,12 +1136,14 @@ public class NetworkManagementService extends INetworkManagementService.Stub final StringBuilder command = new StringBuilder(); command.append("bandwidth removeiquota ").append(iface); + mActiveQuotaIfaces.remove(iface); + mActiveAlertIfaces.remove(iface); + try { // TODO: support quota shared across interfaces mConnector.doCommand(command.toString()); - mActiveQuotaIfaces.remove(iface); - mActiveAlertIfaces.remove(iface); } catch (NativeDaemonConnectorException e) { + // TODO: include current iptables state throw new IllegalStateException("Error communicating to native daemon", e); } }