Merge "Fix listening NetworkRequests to listen for all networks." into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d00f0350c0
@@ -2109,13 +2109,21 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
if (newCap.satisfiedByNetworkCapabilities(network.networkCapabilities)) {
|
if (newCap.satisfiedByNetworkCapabilities(network.networkCapabilities)) {
|
||||||
if (VDBG) log("apparently satisfied. currentScore=" + network.currentScore);
|
if (VDBG) log("apparently satisfied. currentScore=" + network.currentScore);
|
||||||
if ((bestNetwork == null) || bestNetwork.currentScore < network.currentScore) {
|
if ((bestNetwork == null) || bestNetwork.currentScore < network.currentScore) {
|
||||||
bestNetwork = network;
|
if (!nri.isRequest) {
|
||||||
|
// Not setting bestNetwork here as a listening NetworkRequest may be
|
||||||
|
// satisfied by multiple Networks. Instead the request is added to
|
||||||
|
// each satisfying Network and notified about each.
|
||||||
|
network.addRequest(nri.request);
|
||||||
|
notifyNetworkCallback(network, nri);
|
||||||
|
} else {
|
||||||
|
bestNetwork = network;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bestNetwork != null) {
|
if (bestNetwork != null) {
|
||||||
if (VDBG) log("using " + bestNetwork.name());
|
if (VDBG) log("using " + bestNetwork.name());
|
||||||
if (nri.isRequest && bestNetwork.networkInfo.isConnected()) {
|
if (bestNetwork.networkInfo.isConnected()) {
|
||||||
// Cancel any lingering so the linger timeout doesn't teardown this network
|
// Cancel any lingering so the linger timeout doesn't teardown this network
|
||||||
// even though we have a request for it.
|
// even though we have a request for it.
|
||||||
bestNetwork.networkLingered.clear();
|
bestNetwork.networkLingered.clear();
|
||||||
@@ -2125,7 +2133,7 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
mNetworkForRequestId.put(nri.request.requestId, bestNetwork);
|
mNetworkForRequestId.put(nri.request.requestId, bestNetwork);
|
||||||
notifyNetworkCallback(bestNetwork, nri);
|
notifyNetworkCallback(bestNetwork, nri);
|
||||||
score = bestNetwork.currentScore;
|
score = bestNetwork.currentScore;
|
||||||
if (nri.isRequest && nri.request.legacyType != TYPE_NONE) {
|
if (nri.request.legacyType != TYPE_NONE) {
|
||||||
mLegacyTypeTracker.add(nri.request.legacyType, bestNetwork);
|
mLegacyTypeTracker.add(nri.request.legacyType, bestNetwork);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4423,6 +4431,10 @@ public class ConnectivityService extends IConnectivityManager.Stub {
|
|||||||
if (VDBG) log(" checking if request is satisfied: " + nri.request);
|
if (VDBG) log(" checking if request is satisfied: " + nri.request);
|
||||||
if (nri.request.networkCapabilities.satisfiedByNetworkCapabilities(
|
if (nri.request.networkCapabilities.satisfiedByNetworkCapabilities(
|
||||||
newNetwork.networkCapabilities)) {
|
newNetwork.networkCapabilities)) {
|
||||||
|
if (!nri.isRequest) {
|
||||||
|
newNetwork.addRequest(nri.request);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// next check if it's better than any current network we're using for
|
// next check if it's better than any current network we're using for
|
||||||
// this request
|
// this request
|
||||||
if (VDBG) {
|
if (VDBG) {
|
||||||
|
|||||||
Reference in New Issue
Block a user