diff --git a/src/main/java/org/bdware/sc/util/DHTUtil.java b/src/main/java/org/bdware/sc/util/DHTUtil.java index a4f87ef..8e21b83 100644 --- a/src/main/java/org/bdware/sc/util/DHTUtil.java +++ b/src/main/java/org/bdware/sc/util/DHTUtil.java @@ -16,14 +16,14 @@ public class DHTUtil { if (nodes.length == 0) { return null; } - if (nodes.length <= k) { + if (nodes.length == 1) { return nodes; } - String hash = HashUtil.sha3ToFixedLen(key, nodes[0].length()); + String hash = HashUtil.sha3ToFixedLen(key, nodes[0].length() - 2); int l = 0, r = nodes.length - 1, m, - h2l = hash.compareTo(nodes[l]), r2h = nodes[r].compareTo(hash), + h2l = hash.compareTo(nodes[l].substring(2)), r2h = nodes[r].substring(2).compareTo(hash), h2m; BigInteger bigH = null; String selected; @@ -41,7 +41,7 @@ public class DHTUtil { if (l + 1 == r) { BigInteger bigL = getBigInteger(nodes[l]), bigR = getBigInteger(nodes[r]); - bigH = new BigInteger(hash.substring(2)); + bigH = new BigInteger(hash); if (bigR.subtract(bigH).compareTo(bigH.subtract(bigL)) > -1) { selected = nodes[l]; m = l; @@ -52,7 +52,7 @@ public class DHTUtil { break; } m = (l + r) >> 1; - h2m = hash.compareTo(nodes[m]); + h2m = hash.compareTo(nodes[m].substring(2)); if (h2m < 1) { r = m; r2h = -h2m; @@ -76,7 +76,7 @@ public class DHTUtil { ret.add(nodes[l--]); } else { if (null == bigH) { - bigH = new BigInteger(hash.substring(2)); + bigH = new BigInteger(hash); } if (getBigInteger(nodes[r]).subtract(bigH) .compareTo(bigH.subtract(getBigInteger(nodes[l]))) > -1) {