From d84fafd4a8e6a159bdd269748069b4ef6f5ce685 Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 5 Dec 2023 21:50:29 +0000 Subject: [PATCH] Fix askpass caching --- app/src/main/java/io/xpipe/app/util/AskpassAlert.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/util/AskpassAlert.java b/app/src/main/java/io/xpipe/app/util/AskpassAlert.java index b5f5716d1..95ded3b60 100644 --- a/app/src/main/java/io/xpipe/app/util/AskpassAlert.java +++ b/app/src/main/java/io/xpipe/app/util/AskpassAlert.java @@ -13,7 +13,7 @@ import java.util.*; public class AskpassAlert { private static final Set cancelledRequests = new HashSet<>(); - private static final Set requests = new HashSet<>(); + private static final Map requests = new HashMap<>(); public static SecretValue query(String prompt, UUID requestId, UUID secretId, int sub) { if (cancelledRequests.contains(requestId)) { @@ -21,13 +21,13 @@ public class AskpassAlert { } var ref = new SecretManager.SecretReference(secretId, sub); - if (SecretManager.get(ref).isPresent() && requests.contains(requestId)) { + if (SecretManager.get(ref).isPresent() && ref.equals(requests.get(requestId))) { SecretManager.clear(ref); } var found = SecretManager.get(ref); if (found.isPresent()) { - requests.add(requestId); + requests.put(requestId, ref); return found.get(); } @@ -50,7 +50,7 @@ public class AskpassAlert { // If the result is null, assume that the operation was aborted by the user if (r != null && SecretManager.shouldCacheForPrompt(prompt)) { - requests.add(requestId); + requests.put(requestId,ref); SecretManager.set(ref, r); } else { cancelledRequests.add(requestId);