From fb7adf4307be0f8485bb956470b74b98fd56943d Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Wed, 7 Feb 2024 09:47:58 +0100 Subject: [PATCH] Fix inaccurate firewall grace period The timeout did not take into account the time spent during the device deep sleep Fixes #390 --- .../java/com/emanuelef/remote_capture/MitmReceiver.java | 4 ++-- .../emanuelef/remote_capture/activities/AboutActivity.java | 6 +++--- .../java/com/emanuelef/remote_capture/model/Blocklist.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/MitmReceiver.java b/app/src/main/java/com/emanuelef/remote_capture/MitmReceiver.java index e3cfb824..66e5e22e 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/MitmReceiver.java +++ b/app/src/main/java/com/emanuelef/remote_capture/MitmReceiver.java @@ -109,7 +109,7 @@ public class MitmReceiver implements Runnable, ConnectionsListener, MitmListener type = _type; msg = _msg; port = _port; - pendingSince = SystemClock.uptimeMillis(); + pendingSince = SystemClock.elapsedRealtime(); when = _now; } } @@ -331,7 +331,7 @@ public class MitmReceiver implements Runnable, ConnectionsListener, MitmListener private synchronized void addPendingMessage(PendingMessage pending) { // Purge unresolved connections (should not happen, just in case) if(mPendingMessages.size() > 32) { - long now = SystemClock.uptimeMillis(); + long now = SystemClock.elapsedRealtime(); for(int i = mPendingMessages.size()-1; i>=0; i--) { ArrayList pp = mPendingMessages.valueAt(i); diff --git a/app/src/main/java/com/emanuelef/remote_capture/activities/AboutActivity.java b/app/src/main/java/com/emanuelef/remote_capture/activities/AboutActivity.java index ddd6614a..84c0cd39 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/activities/AboutActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/activities/AboutActivity.java @@ -290,7 +290,7 @@ public class AboutActivity extends BaseActivity implements MenuProvider { return; } int timeout_ms = Integer.parseInt(timeout_s) * 1000; - long deadline = SystemClock.uptimeMillis() + timeout_ms; + long deadline = SystemClock.elapsedRealtime() + timeout_ms; Log.d(TAG, "QR request_id=" + qr_req_id + ", timeout=" + timeout_ms + " ms"); // Step 2: generate QR code @@ -357,7 +357,7 @@ public class AboutActivity extends BaseActivity implements MenuProvider { View qrLoading = dialog.findViewById(R.id.qr_code_loading); View qrInfo = dialog.findViewById(R.id.qr_info_text); - mQrStartTime = SystemClock.uptimeMillis(); + mQrStartTime = SystemClock.elapsedRealtime(); mQrDeadline = deadline; updateQrProgress(dialog); @@ -373,7 +373,7 @@ public class AboutActivity extends BaseActivity implements MenuProvider { return; long interval = mQrDeadline - mQrStartTime; - int progress = Math.min((int)((SystemClock.uptimeMillis() - mQrStartTime) * 100 / interval), 100); + int progress = Math.min((int)((SystemClock.elapsedRealtime() - mQrStartTime) * 100 / interval), 100); qrProgress.setProgress(100 - progress); mHandler.postDelayed(() -> updateQrProgress(dialog), 1000); diff --git a/app/src/main/java/com/emanuelef/remote_capture/model/Blocklist.java b/app/src/main/java/com/emanuelef/remote_capture/model/Blocklist.java index 2bc7bb00..bea29752 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/model/Blocklist.java +++ b/app/src/main/java/com/emanuelef/remote_capture/model/Blocklist.java @@ -22,13 +22,13 @@ public class Blocklist extends MatchList { } public synchronized boolean unblockAppForMinutes(int uid, int minutes) { - Long old_val = mUidToGrace.put(uid, SystemClock.uptimeMillis() + (minutes * 60_000L)); + Long old_val = mUidToGrace.put(uid, SystemClock.elapsedRealtime() + (minutes * 60_000L)); Log.i(TAG, "Grace app: " + uid + " for " + minutes + " minutes (old: " + old_val + ")"); return (old_val == null); } public synchronized boolean checkGracePeriods() { - long now = SystemClock.uptimeMillis(); + long now = SystemClock.elapsedRealtime(); boolean changed = false; Iterator> iter = mUidToGrace.entrySet().iterator();