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

Commit c2654744 authored by Jack Yu's avatar Jack Yu Committed by Automerger Merge Worker
Browse files

Fixed dangling network agent not cleaned up am: ec05e7f2 am: 044b7bf7

Change-Id: I2e395e14f4ca09cef3306bdce97ae64fdcdb54c8
parents 2c7c2f38 044b7bf7
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1859,10 +1859,8 @@ public class DataConnection extends StateMachine {
                            DataConnection.this, mTransportType);
                    NetworkInfo networkInfo = mHandoverSourceNetworkAgent.getNetworkInfo();
                    if (networkInfo != null) {
                        networkInfo.setDetailedState(NetworkInfo.DetailedState.DISCONNECTED,
                                "dangling clean up", networkInfo.getExtraInfo());
                        mHandoverSourceNetworkAgent.sendNetworkInfo(networkInfo,
                                DataConnection.this);
                        log("Cleared dangling network agent. " + mHandoverSourceNetworkAgent);
                        mHandoverSourceNetworkAgent.unregister(DataConnection.this);
                    } else {
                        String str = "Failed to get network info.";
                        loge(str);
+17 −6
Original line number Diff line number Diff line
@@ -269,6 +269,22 @@ public class DcNetworkAgent extends NetworkAgent {
        sendNetworkScore(score);
    }

    /**
     * Unregister the network agent from connectivity service.
     *
     * @param dc The data connection that invokes this method.
     */
    public synchronized void unregister(DataConnection dc) {
        if (!isOwned(dc, "unregister")) return;

        if (dc.getLinkProperties() != null
                && !TextUtils.isEmpty(dc.getLinkProperties().getInterfaceName())) {
            sInterfaceNames.remove(dc.getLinkProperties().getInterfaceName());
        }
        logd("Unregister from connectivity service");
        super.unregister();
    }

    /**
     * Set the network info.
     *
@@ -288,12 +304,7 @@ public class DcNetworkAgent extends NetworkAgent {
        }
        if ((oldState == NetworkInfo.State.SUSPENDED || oldState == NetworkInfo.State.CONNECTED)
                && state == NetworkInfo.State.DISCONNECTED) {
            if (dc.getLinkProperties() != null
                    && !TextUtils.isEmpty(dc.getLinkProperties().getInterfaceName())) {
                sInterfaceNames.remove(dc.getLinkProperties().getInterfaceName());
            }
            logd("Unregister from connectivity service");
            unregister();
            unregister(dc);
        }
        mNetworkInfo = new NetworkInfo(networkInfo);
    }