Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 896b49ad authored by Xiaohui Chen's avatar Xiaohui Chen
Browse files

ignore initial request to disable iptable chain

iptable child chains are disabled by default.  Ignore the initial
request so netd won't throw errors when it cannot detach chains that
does not exist.

Bug: 22800189
Change-Id: I9312dd558ba6d59dc6aa394afeb66a222daafcf9
parent 5a5a1ca1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -2010,9 +2010,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub
    public void setFirewallChainEnabled(int chain, boolean enable) {
        enforceSystemUid();
        synchronized (mQuotaLock) {
            if (mFirewallChainStates.indexOfKey(chain) >= 0 &&
                    mFirewallChainStates.get(chain) == enable) {
                // All is the same, nothing to do.
            if (mFirewallChainStates.get(chain) == enable) {
                // All is the same, nothing to do.  This relies on the fact that netd has child
                // chains default detached.
                return;
            }
            mFirewallChainStates.put(chain, enable);
+0 −8
Original line number Diff line number Diff line
@@ -279,8 +279,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
    final SparseIntArray mUidPolicy = new SparseIntArray();
    /** Currently derived rules for each UID. */
    final SparseIntArray mUidRules = new SparseIntArray();
    /** Set of states for the child firewall chains. True if the chain is active. */
    final SparseBooleanArray mFirewallChainStates = new SparseBooleanArray();

    /**
     * UIDs that have been white-listed to always be able to have network access
@@ -2437,12 +2435,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
     * Add or remove a uid to the firewall blacklist for all network ifaces.
     */
    private void enableFirewallChainLocked(int chain, boolean enable) {
        if (mFirewallChainStates.indexOfKey(chain) >= 0 &&
                mFirewallChainStates.get(chain) == enable) {
            // All is the same, nothing to do.
            return;
        }
        mFirewallChainStates.put(chain, enable);
        try {
            mNetworkManager.setFirewallChainEnabled(chain, enable);
        } catch (IllegalStateException e) {