Skip to content
Snippets Groups Projects
Commit fc7428f9 authored by Éloïs's avatar Éloïs
Browse files

Merge branch 'fix/1.6/ws2p/outcoming_connection' into '1.6'

[enh] #1254 Enhance the connection to outcoming WS2P peers

See merge request !1237
parents d52a236f b81c745b
No related branches found
No related tags found
1 merge request!1237[enh] #1254 Enhance the connection to outcoming WS2P peers
......@@ -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
......@@ -453,6 +469,7 @@ export class WS2PCluster {
}
}
}
}))
i++
// Trim the eventual extra connections
setTimeout(() => this.removeLowPriorityConnections(prefered), WS2PConstants.CONNEXION_TIMEOUT)
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment