Loading services/core/java/com/android/server/ConnectivityService.java +27 −7 Original line number Original line Diff line number Diff line Loading @@ -1733,6 +1733,19 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } private boolean isLiveNetworkAgent(NetworkAgentInfo nai, String msg) { final NetworkAgentInfo officialNai; synchronized (mNetworkForNetId) { officialNai = mNetworkForNetId.get(nai.network.netId); } if (officialNai != null && officialNai.equals(nai)) return true; if (officialNai != null || VDBG) { loge(msg + " - validateNetworkAgent found mismatched netId: " + officialNai + " - " + nai); } return false; } // must be stateless - things change under us. // must be stateless - things change under us. private class NetworkStateTrackerHandler extends Handler { private class NetworkStateTrackerHandler extends Handler { public NetworkStateTrackerHandler(Looper looper) { public NetworkStateTrackerHandler(Looper looper) { Loading Loading @@ -1862,23 +1875,30 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } case NetworkMonitor.EVENT_NETWORK_VALIDATED: { case NetworkMonitor.EVENT_NETWORK_VALIDATED: { NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; if (isLiveNetworkAgent(nai, "EVENT_NETWORK_VALIDATED")) { handleConnectionValidated(nai); handleConnectionValidated(nai); } break; break; } } case NetworkMonitor.EVENT_NETWORK_LINGER_COMPLETE: { case NetworkMonitor.EVENT_NETWORK_LINGER_COMPLETE: { NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; if (isLiveNetworkAgent(nai, "EVENT_NETWORK_LINGER_COMPLETE")) { handleLingerComplete(nai); handleLingerComplete(nai); } break; break; } } case NetworkMonitor.EVENT_PROVISIONING_NOTIFICATION: { case NetworkMonitor.EVENT_PROVISIONING_NOTIFICATION: { if (msg.arg1 == 0) { NetworkAgentInfo nai = null; setProvNotificationVisibleIntent(false, msg.arg2, 0, null, null); synchronized (mNetworkForNetId) { } else { nai = mNetworkForNetId.get(msg.arg2); NetworkAgentInfo nai = mNetworkForNetId.get(msg.arg2); } if (nai == null) { if (nai == null) { loge("EVENT_PROVISIONING_NOTIFICATION from unknown NetworkMonitor"); loge("EVENT_PROVISIONING_NOTIFICATION from unknown NetworkMonitor"); break; break; } } if (msg.arg1 == 0) { setProvNotificationVisibleIntent(false, msg.arg2, 0, null, null); } else { setProvNotificationVisibleIntent(true, msg.arg2, nai.networkInfo.getType(), setProvNotificationVisibleIntent(true, msg.arg2, nai.networkInfo.getType(), nai.networkInfo.getExtraInfo(), (PendingIntent)msg.obj); nai.networkInfo.getExtraInfo(), (PendingIntent)msg.obj); } } Loading Loading
services/core/java/com/android/server/ConnectivityService.java +27 −7 Original line number Original line Diff line number Diff line Loading @@ -1733,6 +1733,19 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } private boolean isLiveNetworkAgent(NetworkAgentInfo nai, String msg) { final NetworkAgentInfo officialNai; synchronized (mNetworkForNetId) { officialNai = mNetworkForNetId.get(nai.network.netId); } if (officialNai != null && officialNai.equals(nai)) return true; if (officialNai != null || VDBG) { loge(msg + " - validateNetworkAgent found mismatched netId: " + officialNai + " - " + nai); } return false; } // must be stateless - things change under us. // must be stateless - things change under us. private class NetworkStateTrackerHandler extends Handler { private class NetworkStateTrackerHandler extends Handler { public NetworkStateTrackerHandler(Looper looper) { public NetworkStateTrackerHandler(Looper looper) { Loading Loading @@ -1862,23 +1875,30 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } case NetworkMonitor.EVENT_NETWORK_VALIDATED: { case NetworkMonitor.EVENT_NETWORK_VALIDATED: { NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; if (isLiveNetworkAgent(nai, "EVENT_NETWORK_VALIDATED")) { handleConnectionValidated(nai); handleConnectionValidated(nai); } break; break; } } case NetworkMonitor.EVENT_NETWORK_LINGER_COMPLETE: { case NetworkMonitor.EVENT_NETWORK_LINGER_COMPLETE: { NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; NetworkAgentInfo nai = (NetworkAgentInfo)msg.obj; if (isLiveNetworkAgent(nai, "EVENT_NETWORK_LINGER_COMPLETE")) { handleLingerComplete(nai); handleLingerComplete(nai); } break; break; } } case NetworkMonitor.EVENT_PROVISIONING_NOTIFICATION: { case NetworkMonitor.EVENT_PROVISIONING_NOTIFICATION: { if (msg.arg1 == 0) { NetworkAgentInfo nai = null; setProvNotificationVisibleIntent(false, msg.arg2, 0, null, null); synchronized (mNetworkForNetId) { } else { nai = mNetworkForNetId.get(msg.arg2); NetworkAgentInfo nai = mNetworkForNetId.get(msg.arg2); } if (nai == null) { if (nai == null) { loge("EVENT_PROVISIONING_NOTIFICATION from unknown NetworkMonitor"); loge("EVENT_PROVISIONING_NOTIFICATION from unknown NetworkMonitor"); break; break; } } if (msg.arg1 == 0) { setProvNotificationVisibleIntent(false, msg.arg2, 0, null, null); } else { setProvNotificationVisibleIntent(true, msg.arg2, nai.networkInfo.getType(), setProvNotificationVisibleIntent(true, msg.arg2, nai.networkInfo.getType(), nai.networkInfo.getExtraInfo(), (PendingIntent)msg.obj); nai.networkInfo.getExtraInfo(), (PendingIntent)msg.obj); } } Loading