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

Commit 35228d72 authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android (Google) Code Review
Browse files

Merge "Avoid reusing a currently active NetID." into lmp-dev

parents 1bbcaa0f 60061a6e
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -756,10 +756,20 @@ public class ConnectivityService extends IConnectivityManager.Stub {
        return mNextNetworkRequestId++;
    }

    private synchronized int nextNetId() {
    private void assignNextNetId(NetworkAgentInfo nai) {
        synchronized (mNetworkForNetId) {
            for (int i = MIN_NET_ID; i <= MAX_NET_ID; i++) {
                int netId = mNextNetId;
                if (++mNextNetId > MAX_NET_ID) mNextNetId = MIN_NET_ID;
        return netId;
                // Make sure NetID unused.  http://b/16815182
                if (mNetworkForNetId.get(netId) == null) {
                    nai.network = new Network(netId);
                    mNetworkForNetId.put(netId, nai);
                    return;
                }
            }
        }
        throw new IllegalStateException("No free netIds");
    }

    private int getConnectivityChangeDelay() {
@@ -4149,7 +4159,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
            int currentScore, NetworkMisc networkMisc) {
        enforceConnectivityInternalPermission();

        NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(), nextNetId(),
        NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
            new NetworkInfo(networkInfo), new LinkProperties(linkProperties),
            new NetworkCapabilities(networkCapabilities), currentScore, mContext, mTrackerHandler,
            networkMisc);
@@ -4163,9 +4173,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
    private void handleRegisterNetworkAgent(NetworkAgentInfo na) {
        if (VDBG) log("Got NetworkAgent Messenger");
        mNetworkAgentInfos.put(na.messenger, na);
        synchronized (mNetworkForNetId) {
            mNetworkForNetId.put(na.network.netId, na);
        }
        assignNextNetId(na);
        na.asyncChannel.connect(mContext, mTrackerHandler, na.messenger);
        NetworkInfo networkInfo = na.networkInfo;
        na.networkInfo = null;
+5 −4
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import java.util.ArrayList;
 */
public class NetworkAgentInfo {
    public NetworkInfo networkInfo;
    public final Network network;
    public Network network;
    public LinkProperties linkProperties;
    public NetworkCapabilities networkCapabilities;
    public int currentScore;
@@ -55,12 +55,12 @@ public class NetworkAgentInfo {
    public final Messenger messenger;
    public final AsyncChannel asyncChannel;

    public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, int netId, NetworkInfo info,
    public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, NetworkInfo info,
            LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler,
            NetworkMisc misc) {
        this.messenger = messenger;
        asyncChannel = ac;
        network = new Network(netId);
        network = null;
        networkInfo = info;
        linkProperties = lp;
        networkCapabilities = nc;
@@ -87,6 +87,7 @@ public class NetworkAgentInfo {

    public String name() {
        return "NetworkAgentInfo [" + networkInfo.getTypeName() + " (" +
                networkInfo.getSubtypeName() + ") - " + network.toString() + "]";
                networkInfo.getSubtypeName() + ") - " +
                (network == null ? "null" : network.toString()) + "]";
    }
}