am 6c93739f: am 49f74a38: Clear process DNS NetID binding when expiring or releaseing legacy requests.
* commit '6c93739f2f25c8afb77997165fa86be537df67a9': Clear process DNS NetID binding when expiring or releaseing legacy requests.
This commit is contained in:
@@ -933,10 +933,8 @@ public class ConnectivityManager {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkCallback networkCallback = removeRequestForFeature(netCap);
|
if (removeRequestForFeature(netCap)) {
|
||||||
if (networkCallback != null) {
|
|
||||||
Log.d(TAG, "stopUsingNetworkFeature for " + networkType + ", " + feature);
|
Log.d(TAG, "stopUsingNetworkFeature for " + networkType + ", " + feature);
|
||||||
unregisterNetworkCallback(networkCallback);
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -1103,6 +1101,14 @@ public class ConnectivityManager {
|
|||||||
int expireSequenceNumber;
|
int expireSequenceNumber;
|
||||||
Network currentNetwork;
|
Network currentNetwork;
|
||||||
int delay = -1;
|
int delay = -1;
|
||||||
|
|
||||||
|
private void clearDnsBinding() {
|
||||||
|
if (currentNetwork != null) {
|
||||||
|
currentNetwork = null;
|
||||||
|
setProcessDefaultNetworkForHostResolution(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NetworkCallback networkCallback = new NetworkCallback() {
|
NetworkCallback networkCallback = new NetworkCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onAvailable(Network network) {
|
public void onAvailable(Network network) {
|
||||||
@@ -1112,10 +1118,7 @@ public class ConnectivityManager {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onLost(Network network) {
|
public void onLost(Network network) {
|
||||||
if (network.equals(currentNetwork)) {
|
if (network.equals(currentNetwork)) clearDnsBinding();
|
||||||
currentNetwork = null;
|
|
||||||
setProcessDefaultNetworkForHostResolution(null);
|
|
||||||
}
|
|
||||||
Log.d(TAG, "startUsingNetworkFeature lost Network:" + network);
|
Log.d(TAG, "startUsingNetworkFeature lost Network:" + network);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1144,10 +1147,7 @@ public class ConnectivityManager {
|
|||||||
LegacyRequest l = sLegacyRequests.get(netCap);
|
LegacyRequest l = sLegacyRequests.get(netCap);
|
||||||
if (l == null) return;
|
if (l == null) return;
|
||||||
ourSeqNum = l.expireSequenceNumber;
|
ourSeqNum = l.expireSequenceNumber;
|
||||||
if (l.expireSequenceNumber == sequenceNum) {
|
if (l.expireSequenceNumber == sequenceNum) removeRequestForFeature(netCap);
|
||||||
unregisterNetworkCallback(l.networkCallback);
|
|
||||||
sLegacyRequests.remove(netCap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Log.d(TAG, "expireRequest with " + ourSeqNum + ", " + sequenceNum);
|
Log.d(TAG, "expireRequest with " + ourSeqNum + ", " + sequenceNum);
|
||||||
}
|
}
|
||||||
@@ -1178,12 +1178,15 @@ public class ConnectivityManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkCallback removeRequestForFeature(NetworkCapabilities netCap) {
|
private boolean removeRequestForFeature(NetworkCapabilities netCap) {
|
||||||
|
final LegacyRequest l;
|
||||||
synchronized (sLegacyRequests) {
|
synchronized (sLegacyRequests) {
|
||||||
LegacyRequest l = sLegacyRequests.remove(netCap);
|
l = sLegacyRequests.remove(netCap);
|
||||||
if (l == null) return null;
|
|
||||||
return l.networkCallback;
|
|
||||||
}
|
}
|
||||||
|
if (l == null) return false;
|
||||||
|
unregisterNetworkCallback(l.networkCallback);
|
||||||
|
l.clearDnsBinding();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user