From 69da8583652c4eee454d077ee228a66559898176 Mon Sep 17 00:00:00 2001
From: woodser <woodser@protonmail.com>
Date: Tue, 14 Jan 2025 14:24:17 -0500
Subject: [PATCH] check for best connection before returning singular
 connection

---
 .../main/java/haveno/core/api/XmrConnectionService.java   | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/haveno/core/api/XmrConnectionService.java b/core/src/main/java/haveno/core/api/XmrConnectionService.java
index 640aa2b4..88d0117f 100644
--- a/core/src/main/java/haveno/core/api/XmrConnectionService.java
+++ b/core/src/main/java/haveno/core/api/XmrConnectionService.java
@@ -256,7 +256,6 @@ public final class XmrConnectionService {
     }
 
     public MoneroRpcConnection getBestConnection() {
-        accountService.checkAccountOpen();
         return getBestConnection(new ArrayList<MoneroRpcConnection>());
     }
 
@@ -264,8 +263,9 @@ public final class XmrConnectionService {
         accountService.checkAccountOpen();
         Set<MoneroRpcConnection> ignoredConnectionsSet = new HashSet<>(ignoredConnections);
         addLocalNodeIfIgnored(ignoredConnectionsSet);
-        if (connectionManager.getConnections().size() == 1 && !ignoredConnectionsSet.contains(connectionManager.getConnections().get(0))) return connectionManager.getConnections().get(0);
-        return connectionManager.getBestAvailableConnection(ignoredConnectionsSet.toArray(new MoneroRpcConnection[0]));
+        MoneroRpcConnection bestConnection = connectionManager.getBestAvailableConnection(ignoredConnectionsSet.toArray(new MoneroRpcConnection[0])); // checks connections
+        if (bestConnection == null && connectionManager.getConnections().size() == 1 && !ignoredConnectionsSet.contains(connectionManager.getConnections().get(0))) bestConnection = connectionManager.getConnections().get(0);
+        return bestConnection;
     }
 
     private void addLocalNodeIfIgnored(Collection<MoneroRpcConnection> ignoredConnections) {
@@ -336,7 +336,7 @@ public final class XmrConnectionService {
         }, EXCLUDE_CONNECTION_SECONDS);
 
         // return if no connection to switch to
-        if (bestConnection == null) {
+        if (bestConnection == null || !Boolean.TRUE.equals(bestConnection.isConnected())) {
             log.warn("No connection to switch to");
             return false;
         }