Skip to content

Commit

Permalink
make node parsing and formatting ipv6-friendly (#939)
Browse files Browse the repository at this point in the history
Co-authored-by: m2049r <[email protected]>
  • Loading branch information
retrnull and m2049r authored Dec 10, 2024
1 parent 8b7c5a2 commit 899ac77
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 17 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ dependencies {

implementation 'com.google.android.material:material:1.12.0'

implementation "com.google.guava:guava:33.1.0-android"

implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation "com.squareup.okhttp3:okhttp:4.12.0"
implementation "io.github.rburgst:okhttp-digest:3.1.0"
Expand Down
26 changes: 9 additions & 17 deletions app/src/main/java/com/m2049r/xmrwallet/data/Node.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.m2049r.xmrwallet.data;

import com.google.common.net.HostAndPort;
import com.m2049r.xmrwallet.model.NetworkType;
import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.util.OnionHelper;
Expand Down Expand Up @@ -169,10 +170,10 @@ static public Node fromString(String nodeString) {
throw new IllegalArgumentException("Too many '/' or too few");

daemonAddress = daParts[0];
String[] da = daemonAddress.split(":");
if ((da.length > 2) || (da.length < 1))
throw new IllegalArgumentException("Too many ':' or too few");
String host = da[0];
HostAndPort hostAndPort = HostAndPort.fromString(daemonAddress)
.withDefaultPort(getDefaultRpcPort())
.requireBracketsForIPv6();
String host = hostAndPort.getHost();

if (daParts.length == 1) {
networkType = NetworkType.NetworkType_Mainnet;
Expand Down Expand Up @@ -204,22 +205,12 @@ static public Node fromString(String nodeString) {
}
this.name = name;

int port;
if (da.length == 2) {
try {
port = Integer.parseInt(da[1]);
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("Port not numeric");
}
} else {
port = getDefaultRpcPort();
}
try {
setHost(host);
} catch (UnknownHostException ex) {
throw new IllegalArgumentException("cannot resolve host " + host);
}
this.rpcPort = port;
this.rpcPort = hostAndPort.getPort();
this.levinPort = getDefaultLevinPort();
}

Expand All @@ -233,7 +224,8 @@ public String toString() {
if (!username.isEmpty() && !password.isEmpty()) {
sb.append(username).append(":").append(password).append("@");
}
sb.append(host).append(":").append(rpcPort);
HostAndPort address = HostAndPort.fromParts(host, rpcPort);
sb.append(address.toString());
sb.append("/");
switch (networkType) {
case NetworkType_Mainnet:
Expand Down Expand Up @@ -271,7 +263,7 @@ public Node(InetSocketAddress socketAddress) {
}

public String getAddress() {
return getHostAddress() + ":" + rpcPort;
return HostAndPort.fromParts(getHostAddress(), rpcPort).toString();
}

public String getHostAddress() {
Expand Down

0 comments on commit 899ac77

Please sign in to comment.