Fix a bug where VPNs start out suspended on cellular
As NetworkAgent is in a transition where all agents need to include the NOT_SUSPENDED capability as part of their migration to the system API, ConnectivityService adds it forcefully to all agents that don't have the CELLULAR transport. This doesn't include VPNs when VPNs have some cellular network as their underlying network. The best way to solve this is to make sure the VPN capabilities reflect those of the underlying networks as far as the NOT_SUSPENDED capability is concerned. This is how they work for other similar capabilities. This also happens to contain a drive-by fix for an issue with a spurious capabilities callback is triggered when a VPN connects and it has any underlying network (which means almost always, because it will take the default network if it doesn't declare any). Fixing this was necessary to have a cogent test of this issue, but it could be moved to another patch or it could stay unfixed with some minor ajustment to the tests if judged too dangerous to include in R at this point. Test: New tests in this patch. Also manually tested with tcpdump as described in b/150570873. Bug: 150570873 Original-Change: https://android-review.googlesource.com/1301317 Merged-In: I3e4ff990c0d4825b21c7679be29a482a2d1324ec Change-Id: I3e4ff990c0d4825b21c7679be29a482a2d1324ec
Loading
Please register or sign in to comment