diff --git a/supernode/index.html b/supernode/index.html index 500dd7d..d553a6f 100644 --- a/supernode/index.html +++ b/supernode/index.html @@ -13472,8 +13472,34 @@ } /* ADD A CONDITION SO THAT ONLY ONE SUPERNODE IN THE LEFT CAN RUN THIS */ - if(1) { - localbitcoinplusplus.actions.informAllANodeLeft(getFLOId); + const mcsFloIds = Object.keys(localbitcoinplusplus.myClosestSupernodes) + .map(m=>m.trader_flo_address); + const idx = mcsFloIds.indexOf(getFLOId); + if(idx>=0) { + // Get the list of left Supernodes of disconnected Supernodes + console.table(mcs); + let getLeftSusOfDisconnectedSu = mcs + .filter((f,i)=>(i<=idx + && localbitcoinplusplus.wallets.my_local_flo_address!==f.trader_flo_address)); + + console.table(getLeftSusOfDisconnectedSu); + + let aNearerLeftSupernodeIsAlive = false; + + for (let ln = 0; ln < getLeftSusOfDisconnectedSu.length; ln++) { + const leftNodeObj = getLeftSusOfDisconnectedSu[ln]; + let conns = localbitcoinplusplus.backupWS[leftNodeObj.trader_flo_address]; + if(typeof conns === "object" + && leftNodeObj.trader_flo_address !== getFLOId + && conns.ws_connection.readyState==1) { + console.log(conns); + aNearerLeftSupernodeIsAlive=true; + } + } + + if(!aNearerLeftSupernodeIsAlive) { + localbitcoinplusplus.actions.informAllANodeLeft(getFLOId); + } } msg = `INFO: Supernode ${getFLOId} left.`; @@ -14135,7 +14161,7 @@ if (nextSu===flo_id || nextSu===localbitcoinplusplus.wallets.my_local_flo_address) continue; - nextSupernodeObj = nextSu; + nextSupernodeObj = nextSuObj; break; } return nextSupernodeObj; @@ -14173,17 +14199,17 @@ const switchMyWS = new backupSupernodesWebSocketObject(); let closedFloId = await switchMyWS.getFloIdFromWSUrl(evt.srcElement.url); let nxtSu = await getNextSupernode(closedFloId); - if ((nxtSu==localbitcoinplusplus.wallets.my_local_flo_address - || nxtSu==msg_obj.subject_flo_id)) { - let nxtSu2 = await getNextSupernode(nxtSu); - informOneSupernode(nxtSu2); + if ((nxtSu.trader_flo_address==localbitcoinplusplus.wallets.my_local_flo_address + || nxtSu.trader_flo_address==msg_obj.subject_flo_id)) { + let nxtSu2 = await getNextSupernode(nxtSu.trader_flo_address); + informOneSupernode(nxtSu2.trader_flo_address); } else if(typeof nxtSu !== "undefined") { - informOneSupernode(nxtSu); + informOneSupernode(nxtSu.trader_flo_address); } } }; } - })(); + })(sn); //} } });