Commit b81c745b authored by Cédric Moreau's avatar Cédric Moreau
Browse files

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

parent 7b93a172
Loading
Loading
Loading
Loading
+39 −22
Original line number Diff line number Diff line
@@ -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)
+2 −0
Original line number Diff line number Diff line
@@ -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