diff --git a/supernode/index.html b/supernode/index.html
index 0bf037b..f2b8369 100644
--- a/supernode/index.html
+++ b/supernode/index.html
@@ -10443,7 +10443,7 @@
}
});
},
- determineClosestSupernode: function(flo_addr, n=1, KB=supernodeKBucket) {
+ determineClosestSupernode: function(flo_addr="", n=1, KB=supernodeKBucket, su="") {
return new Promise((resolve, reject)=>{
let msg = ``;
if (typeof supernodeKBucket !== "object") {
@@ -10452,8 +10452,25 @@
reject(msg);
return false;
}
+
+ if (su.length>0) {
+ try {
+ let closestSupernodeMasterList = supernodeKBucket.closest(supernodeKBucket.localNodeId);
+ const index = closestSupernodeMasterList.findIndex(f=>f.data.id==su);
+ closestSupernodeMasterList.splice(0, index);
+ resolve(closestSupernodeMasterList);
+ return true;
+ } catch (error) {
+ reject(error);
+ }
+ return false;
+ }
try {
+ if(flo_addr.length < 0) {
+ showMessage(`WARNING: No Flo Id provided to determine closest Supenode.`);
+ return;
+ }
let isFloIdUint8 = flo_addr instanceof Uint8Array;
if (!isFloIdUint8) {
flo_addr = localbitcoinplusplus.kademlia.floIdToKbucketId('FLO_TEST', flo_addr);
@@ -11118,14 +11135,6 @@
request.globalParams.receiverFloId = params[0].receiver_flo_address;
}
- /********************************************************************************/
-
- // MUST REVIEW.
- // THIS LOGIC IS WRONG WHEN BACKUP SUPERNODE IS ACTING SUPERNODE
- // BECAUSE IT WILL SHOW BACKUP SU IN request.globalParams.primarySupernode BELOW
-
- /********************************************************************************/
-
if (typeof params[0].trader_flo_address !=="string") {
readDB('localbitcoinUser', '00-01').then(result=>{
if (typeof result !=="object" || typeof result.myLocalFLOAddress !=="string") {
@@ -17786,10 +17795,7 @@
res.map(async function (deposit_trade) {
if (localbitcoinplusplus.master_configurations.tradableAsset1
.includes(deposit_trade.product)) {
- const get_requester_primary_supernode = await localbitcoinplusplus.kademlia
- .determineClosestSupernode(res_obj.params[0].trader_flo_address);
- const primarySupernodeForThisUser = get_requester_primary_supernode[0].data.id;
- validateDepositedBTCBalance(deposit_trade, primarySupernodeForThisUser);
+ validateDepositedBTCBalance(deposit_trade, primarySupernodeOfThisUser);
}
});
});
@@ -18177,7 +18183,7 @@
// You have the latest data, send it to other supernodes
let getNextClosestSuObj = await localbitcoinplusplus.kademlia
- .determineClosestSupernode(req_dt.leaving_supernode_flo_id, 3);
+ .determineClosestSupernode("", 3, supernodeKBucket, req_dt.leaving_supernode_flo_id);
let nextBackupSupernode = getNextClosestSuObj[1].data.id;
if (typeof nextBackupSupernode !== "string") {
@@ -20097,7 +20103,7 @@
reactor.addEventListener('requestSupernodeToActAsBackupServerForRequestingUserNode',
async function(params) {
- let getNextClosestSuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode(params.leaving_supernode_flo_id, 3);
+ let getNextClosestSuObj = await localbitcoinplusplus.kademlia.determineClosestSupernode("", 3, supernodeKBucket, params.leaving_supernode_flo_id);
let nextBackupSupernode = getNextClosestSuObj[1].data.id;
if (typeof nextBackupSupernode !== "string") {
@@ -20160,7 +20166,7 @@
throw new Error(msg);
}
- let getNextClosestSuObjOfPrimarySupernode = await localbitcoinplusplus.kademlia.determineClosestSupernode(primarySupernode, 3);
+ let getNextClosestSuObjOfPrimarySupernode = await localbitcoinplusplus.kademlia.determineClosestSupernode("", 3, supernodeKBucket, primarySupernode);
if (localbitcoinplusplus.wallets.my_local_flo_address !== primarySupernode) return;