From 42c9ec389e339497b4dda77bf2e678920ee588f7 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Sat, 13 Aug 2022 11:10:52 +0200 Subject: [PATCH] Fix TooManyRequestsException with NetworkCallbacks On multiple capture start/stop, a TooManyRequestsException could be thrown because the registered NetworkCallback was not unregistered, causing leaks --- .../java/com/emanuelef/remote_capture/CaptureService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java index 0a10cf9c..4132a7f6 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java +++ b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java @@ -545,6 +545,8 @@ public class CaptureService extends VpnService implements Runnable { // after the capture is stopped //INSTANCE = null; + unregisterNetworkCallbacks(); + if(mCaptureThread != null) mCaptureThread.interrupt(); if(mBlacklistsUpdateThread != null) @@ -702,6 +704,7 @@ public class CaptureService extends VpnService implements Runnable { }; try { + Log.d(TAG, "registerNetworkCallback"); cm.registerNetworkCallback( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), @@ -721,6 +724,7 @@ public class CaptureService extends VpnService implements Runnable { ConnectivityManager cm = (ConnectivityManager) getSystemService(Service.CONNECTIVITY_SERVICE); try { + Log.d(TAG, "unregisterNetworkCallback"); cm.unregisterNetworkCallback(mNetworkCallback); } catch(IllegalArgumentException e) { Log.w(TAG, "unregisterNetworkCallback failed: " + e);