cleanupAddressSet function

List<MultiAddr> cleanupAddressSet(
  1. List<MultiAddr> addrs
)

Cleans up a relay's address set to remove private addresses and curtail addrsplosion.

Implementation

List<MultiAddr> cleanupAddressSet(List<MultiAddr> addrs) {
  List<MultiAddr> publicAddrs = [];
  List<MultiAddr> privateAddrs = [];

  for (var a in addrs) {
    if (isRelayAddress(a)) {
      continue;
    }

    if (a.isPublic() || isDNSAddr(a)) {
      publicAddrs.add(a);
      continue;
    }

    if (a.isPrivate()) {
      privateAddrs.add(a);
    }
  }

  if (!hasAddrsplosion(publicAddrs)) {
    return publicAddrs;
  }

  return sanitizeAddrsplodedSet(publicAddrs, privateAddrs);
}