From 537e907576b37053b9399e7a815035e6564c7daa Mon Sep 17 00:00:00 2001 From: ukanth <165996+ukanth@users.noreply.github.com> Date: Sat, 18 Jun 2022 20:36:27 +0530 Subject: [PATCH] Fix: private dns register issue --- .../java/dev/ukanth/ufirewall/util/G.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/dev/ukanth/ufirewall/util/G.java b/app/src/main/java/dev/ukanth/ufirewall/util/G.java index 111f6564..cb92fbd0 100644 --- a/app/src/main/java/dev/ukanth/ufirewall/util/G.java +++ b/app/src/main/java/dev/ukanth/ufirewall/util/G.java @@ -1156,22 +1156,26 @@ public static boolean getPrivateDnsStatus() { return privateDns; } + private static ConnectivityManager.NetworkCallback callback = null; + public static void registerPrivateLink() { if(!enabledPrivateLink) { ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); - ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { - @Override - public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) { - super.onLinkPropertiesChanged(network, linkProperties); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - if(linkProperties.isPrivateDnsActive() != privateDns) { - Log.i(Api.TAG, "Private DNS status changed: " + privateDns); - privateDns = linkProperties.isPrivateDnsActive(); - InterfaceTracker.applyRules("Private DNS changed.. reapplying rules"); + if(callback == null) { + callback = new ConnectivityManager.NetworkCallback() { + @Override + public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) { + super.onLinkPropertiesChanged(network, linkProperties); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + if(linkProperties.isPrivateDnsActive() != privateDns) { + Log.i(Api.TAG, "Private DNS status changed: " + privateDns); + privateDns = linkProperties.isPrivateDnsActive(); + InterfaceTracker.applyRules("Private DNS changed.. reapplying rules"); + } } } - } - }; + }; + } cm.registerNetworkCallback(new NetworkRequest.Builder().build(), callback); enabledPrivateLink = true; } else{