diff --git a/Makefile b/Makefile index 2b1e123447..bcd9b1bcef 100644 --- a/Makefile +++ b/Makefile @@ -480,6 +480,7 @@ haveno-daemon-mainnet: --apiPassword=apitest \ --apiPort=1201 \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ haveno-desktop-mainnet: ./haveno-desktop$(APP_EXT) \ @@ -491,6 +492,7 @@ haveno-desktop-mainnet: --apiPassword=apitest \ --apiPort=1201 \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ user1-daemon-mainnet: ./haveno-daemon$(APP_EXT) \ @@ -503,6 +505,7 @@ user1-daemon-mainnet: --apiPort=1202 \ --passwordRequired=false \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ user1-desktop-mainnet: ./haveno-desktop$(APP_EXT) \ @@ -514,6 +517,7 @@ user1-desktop-mainnet: --apiPassword=apitest \ --apiPort=1202 \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ user2-daemon-mainnet: ./haveno-daemon$(APP_EXT) \ @@ -526,6 +530,7 @@ user2-daemon-mainnet: --apiPort=1203 \ --passwordRequired=false \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ user2-desktop-mainnet: ./haveno-desktop$(APP_EXT) \ @@ -537,6 +542,7 @@ user2-desktop-mainnet: --apiPassword=apitest \ --apiPort=1203 \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ user3-desktop-mainnet: ./haveno-desktop$(APP_EXT) \ @@ -548,3 +554,4 @@ user3-desktop-mainnet: --apiPassword=apitest \ --apiPort=1204 \ --useNativeXmrWallet=false \ + --ignoreLocalXmrNode=false \ diff --git a/core/src/main/java/haveno/core/api/XmrConnectionService.java b/core/src/main/java/haveno/core/api/XmrConnectionService.java index 7fa02bdaa5..93f95d9a05 100644 --- a/core/src/main/java/haveno/core/api/XmrConnectionService.java +++ b/core/src/main/java/haveno/core/api/XmrConnectionService.java @@ -238,7 +238,9 @@ public final class XmrConnectionService { public MoneroRpcConnection getBestAvailableConnection() { accountService.checkAccountOpen(); - return connectionManager.getBestAvailableConnection(); + List ignoredConnections = new ArrayList(); + if (xmrLocalNode.shouldBeIgnored() && connectionManager.hasConnection(xmrLocalNode.getUri())) ignoredConnections.add(connectionManager.getConnectionByUri(xmrLocalNode.getUri())); + return connectionManager.getBestAvailableConnection(ignoredConnections.toArray(new MoneroRpcConnection[0])); } public void setAutoSwitch(boolean autoSwitch) { @@ -458,7 +460,9 @@ public final class XmrConnectionService { // restore last connection if (connectionList.getCurrentConnectionUri().isPresent() && connectionManager.hasConnection(connectionList.getCurrentConnectionUri().get())) { - connectionManager.setConnection(connectionList.getCurrentConnectionUri().get()); + if (!HavenoUtils.isLocalHost(connectionList.getCurrentConnectionUri().get()) || !xmrLocalNode.shouldBeIgnored()) { + connectionManager.setConnection(connectionList.getCurrentConnectionUri().get()); + } } // set connection proxies diff --git a/core/src/main/java/haveno/core/api/XmrLocalNode.java b/core/src/main/java/haveno/core/api/XmrLocalNode.java index 3821aa5aec..d19b27453a 100644 --- a/core/src/main/java/haveno/core/api/XmrLocalNode.java +++ b/core/src/main/java/haveno/core/api/XmrLocalNode.java @@ -81,7 +81,7 @@ public class XmrLocalNode { public XmrLocalNode(Config config, Preferences preferences) { this.config = config; this.preferences = preferences; - this.daemon = new MoneroDaemonRpc("http://" + HavenoUtils.LOOPBACK_HOST + ":" + rpcPort); + this.daemon = new MoneroDaemonRpc(getUri()); // initialize connection manager to listen to local connection this.connectionManager = new MoneroConnectionManager().setConnection(daemon.getRpcConnection()); @@ -92,6 +92,10 @@ public class XmrLocalNode { this.connectionManager.startPolling(REFRESH_PERIOD_LOCAL_MS); } + public String getUri() { + return "http://" + HavenoUtils.LOOPBACK_HOST + ":" + rpcPort; + } + /** * Returns whether Haveno should use a local Monero node, meaning that a node was * detected and conditions under which it should be ignored have not been met. If