Loading services/core/java/com/android/server/ConnectivityService.java +13 −4 Original line number Diff line number Diff line Loading @@ -3597,8 +3597,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private boolean isNetworkPotentialSatisfier( @NonNull final NetworkAgentInfo candidate, @NonNull final NetworkRequestInfo nri) { // listen requests won't keep up a network satisfying it. If this is not a multilayer // request, we can return immediately. For multilayer requests, we have to check to see if // any of the multilayer requests may have a potential satisfier. // request, return immediately. For multilayer requests, check to see if any of the // multilayer requests may have a potential satisfier. if (!nri.isMultilayerRequest() && nri.mRequests.get(0).isListen()) { return false; } Loading Loading @@ -8234,6 +8234,13 @@ public class ConnectivityService extends IConnectivityManager.Stub final IBinder iCb = cb.asBinder(); final NetworkRequestInfo nri = cbInfo.mRequestInfo; // Connectivity Diagnostics are meant to be used with a single network request. It would be // confusing for these networks to change when an NRI is satisfied in another layer. if (nri.isMultilayerRequest()) { throw new IllegalArgumentException("Connectivity Diagnostics do not support multilayer " + "network requests."); } // This means that the client registered the same callback multiple times. Do // not override the previous entry, and exit silently. if (mConnectivityDiagnosticsCallbacks.containsKey(iCb)) { Loading @@ -8260,7 +8267,8 @@ public class ConnectivityService extends IConnectivityManager.Stub synchronized (mNetworkForNetId) { for (int i = 0; i < mNetworkForNetId.size(); i++) { final NetworkAgentInfo nai = mNetworkForNetId.valueAt(i); if (nai.satisfies(nri.request)) { // Connectivity Diagnostics rejects multilayer requests at registration hence get(0) if (nai.satisfies(nri.mRequests.get(0))) { matchingNetworks.add(nai); } } Loading Loading @@ -8388,7 +8396,8 @@ public class ConnectivityService extends IConnectivityManager.Stub mConnectivityDiagnosticsCallbacks.entrySet()) { final ConnectivityDiagnosticsCallbackInfo cbInfo = entry.getValue(); final NetworkRequestInfo nri = cbInfo.mRequestInfo; if (nai.satisfies(nri.request)) { // Connectivity Diagnostics rejects multilayer requests at registration hence get(0). if (nai.satisfies(nri.mRequests.get(0))) { if (checkConnectivityDiagnosticsPermissions( nri.mPid, nri.mUid, nai, cbInfo.mCallingPackageName)) { results.add(entry.getValue().mCb); Loading Loading
services/core/java/com/android/server/ConnectivityService.java +13 −4 Original line number Diff line number Diff line Loading @@ -3597,8 +3597,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private boolean isNetworkPotentialSatisfier( @NonNull final NetworkAgentInfo candidate, @NonNull final NetworkRequestInfo nri) { // listen requests won't keep up a network satisfying it. If this is not a multilayer // request, we can return immediately. For multilayer requests, we have to check to see if // any of the multilayer requests may have a potential satisfier. // request, return immediately. For multilayer requests, check to see if any of the // multilayer requests may have a potential satisfier. if (!nri.isMultilayerRequest() && nri.mRequests.get(0).isListen()) { return false; } Loading Loading @@ -8234,6 +8234,13 @@ public class ConnectivityService extends IConnectivityManager.Stub final IBinder iCb = cb.asBinder(); final NetworkRequestInfo nri = cbInfo.mRequestInfo; // Connectivity Diagnostics are meant to be used with a single network request. It would be // confusing for these networks to change when an NRI is satisfied in another layer. if (nri.isMultilayerRequest()) { throw new IllegalArgumentException("Connectivity Diagnostics do not support multilayer " + "network requests."); } // This means that the client registered the same callback multiple times. Do // not override the previous entry, and exit silently. if (mConnectivityDiagnosticsCallbacks.containsKey(iCb)) { Loading @@ -8260,7 +8267,8 @@ public class ConnectivityService extends IConnectivityManager.Stub synchronized (mNetworkForNetId) { for (int i = 0; i < mNetworkForNetId.size(); i++) { final NetworkAgentInfo nai = mNetworkForNetId.valueAt(i); if (nai.satisfies(nri.request)) { // Connectivity Diagnostics rejects multilayer requests at registration hence get(0) if (nai.satisfies(nri.mRequests.get(0))) { matchingNetworks.add(nai); } } Loading Loading @@ -8388,7 +8396,8 @@ public class ConnectivityService extends IConnectivityManager.Stub mConnectivityDiagnosticsCallbacks.entrySet()) { final ConnectivityDiagnosticsCallbackInfo cbInfo = entry.getValue(); final NetworkRequestInfo nri = cbInfo.mRequestInfo; if (nai.satisfies(nri.request)) { // Connectivity Diagnostics rejects multilayer requests at registration hence get(0). if (nai.satisfies(nri.mRequests.get(0))) { if (checkConnectivityDiagnosticsPermissions( nri.mPid, nri.mUid, nai, cbInfo.mCallingPackageName)) { results.add(entry.getValue().mCb); Loading