Loading app/modules/ws2p/lib/WS2PCluster.ts +39 −22 Original line number Diff line number Diff line Loading @@ -427,8 +427,24 @@ export class WS2PCluster { let i = 0 let countPublicNodesWithSameKey:number = 1 // Necessary if maxPrivate = 0 let endpointsNodesWithSameKey:WS2PEndpoint[] = [] while (i < peers.length && (this.clientsCount() < this.maxLevel1Size || this.numberOfConnectedPublicNodesWithSameKey() < countPublicNodesWithSameKey) ) { const p = peers[i] // Group the peers by bunches const bunchsOfPeers = peers.reduce((bundles:PeerDTO[][], p:PeerDTO) => { let bundleIndex = (bundles.length || 1) - 1 // Maximum size of a bundle of peers if (bundles[bundleIndex] && bundles[bundleIndex].length >= WS2PConstants.INITIAL_CONNECTION_PEERS_BUNDLE_SIZE) { bundleIndex++ } // We create the bundle of it doesn't exist yet if (!bundles[bundleIndex]) { bundles[bundleIndex] = [] } // We feed it with this peer bundles[bundleIndex].push(p) return bundles }, []) while (i < bunchsOfPeers.length && (this.clientsCount() < this.maxLevel1Size || this.numberOfConnectedPublicNodesWithSameKey() < countPublicNodesWithSameKey) ) { this.server.logger.info("WS2P: init: bundle of peers %s/%s", i+1, bunchsOfPeers.length) await Promise.all(bunchsOfPeers[i].map(async p => { if (p.pubkey === this.server.conf.pair.pub) { endpointsNodesWithSameKey = p.getAllWS2PEndpoints(canReachTorEndpoint, canReachClearEndpoint, myUUID) countPublicNodesWithSameKey = endpointsNodesWithSameKey.length Loading @@ -453,6 +469,7 @@ export class WS2PCluster { } } } })) i++ // Trim the eventual extra connections setTimeout(() => this.removeLowPriorityConnections(prefered), WS2PConstants.CONNEXION_TIMEOUT) Loading app/modules/ws2p/lib/constants.ts +2 −0 Original line number Diff line number Diff line Loading @@ -78,5 +78,7 @@ export const WS2PConstants = { HOST_ONION_REGEX: CommonConstants.HOST_ONION_REGEX, FULL_ADDRESS_ONION_REGEX: CommonConstants.WS_FULL_ADDRESS_ONION_REGEX, INITIAL_CONNECTION_PEERS_BUNDLE_SIZE: 5, HEADS_SPREAD_TIMEOUT: 100 // Wait 100ms before sending a bunch of signed heads } No newline at end of file Loading
app/modules/ws2p/lib/WS2PCluster.ts +39 −22 Original line number Diff line number Diff line Loading @@ -427,8 +427,24 @@ export class WS2PCluster { let i = 0 let countPublicNodesWithSameKey:number = 1 // Necessary if maxPrivate = 0 let endpointsNodesWithSameKey:WS2PEndpoint[] = [] while (i < peers.length && (this.clientsCount() < this.maxLevel1Size || this.numberOfConnectedPublicNodesWithSameKey() < countPublicNodesWithSameKey) ) { const p = peers[i] // Group the peers by bunches const bunchsOfPeers = peers.reduce((bundles:PeerDTO[][], p:PeerDTO) => { let bundleIndex = (bundles.length || 1) - 1 // Maximum size of a bundle of peers if (bundles[bundleIndex] && bundles[bundleIndex].length >= WS2PConstants.INITIAL_CONNECTION_PEERS_BUNDLE_SIZE) { bundleIndex++ } // We create the bundle of it doesn't exist yet if (!bundles[bundleIndex]) { bundles[bundleIndex] = [] } // We feed it with this peer bundles[bundleIndex].push(p) return bundles }, []) while (i < bunchsOfPeers.length && (this.clientsCount() < this.maxLevel1Size || this.numberOfConnectedPublicNodesWithSameKey() < countPublicNodesWithSameKey) ) { this.server.logger.info("WS2P: init: bundle of peers %s/%s", i+1, bunchsOfPeers.length) await Promise.all(bunchsOfPeers[i].map(async p => { if (p.pubkey === this.server.conf.pair.pub) { endpointsNodesWithSameKey = p.getAllWS2PEndpoints(canReachTorEndpoint, canReachClearEndpoint, myUUID) countPublicNodesWithSameKey = endpointsNodesWithSameKey.length Loading @@ -453,6 +469,7 @@ export class WS2PCluster { } } } })) i++ // Trim the eventual extra connections setTimeout(() => this.removeLowPriorityConnections(prefered), WS2PConstants.CONNEXION_TIMEOUT) Loading
app/modules/ws2p/lib/constants.ts +2 −0 Original line number Diff line number Diff line Loading @@ -78,5 +78,7 @@ export const WS2PConstants = { HOST_ONION_REGEX: CommonConstants.HOST_ONION_REGEX, FULL_ADDRESS_ONION_REGEX: CommonConstants.WS_FULL_ADDRESS_ONION_REGEX, INITIAL_CONNECTION_PEERS_BUNDLE_SIZE: 5, HEADS_SPREAD_TIMEOUT: 100 // Wait 100ms before sending a bunch of signed heads } No newline at end of file