mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-12 16:10:57 +00:00
fix: ensure loopback addresses are included in available interfaces
This commit is contained in:
@ -57,13 +57,23 @@ def get_available_interfaces(port: int, protocol: str = "tcp") -> List[Multiaddr
|
|||||||
addrs: List[Multiaddr] = []
|
addrs: List[Multiaddr] = []
|
||||||
|
|
||||||
# IPv4 enumeration
|
# IPv4 enumeration
|
||||||
|
seen_v4: set[str] = set()
|
||||||
for ip in _safe_get_network_addrs(4):
|
for ip in _safe_get_network_addrs(4):
|
||||||
|
seen_v4.add(ip)
|
||||||
addrs.append(Multiaddr(f"/ip4/{ip}/{protocol}/{port}"))
|
addrs.append(Multiaddr(f"/ip4/{ip}/{protocol}/{port}"))
|
||||||
|
|
||||||
|
# Ensure loopback IPv4 explicitly present (JS echo parity) even if not returned
|
||||||
|
if "127.0.0.1" not in seen_v4:
|
||||||
|
addrs.append(Multiaddr(f"/ip4/127.0.0.1/{protocol}/{port}"))
|
||||||
|
|
||||||
# IPv6 enumeration (optional: only include if we have at least one global or loopback)
|
# IPv6 enumeration (optional: only include if we have at least one global or loopback)
|
||||||
|
seen_v6: set[str] = set()
|
||||||
for ip in _safe_get_network_addrs(6):
|
for ip in _safe_get_network_addrs(6):
|
||||||
# Avoid returning unusable wildcard expansions if the environment does not support IPv6
|
seen_v6.add(ip)
|
||||||
addrs.append(Multiaddr(f"/ip6/{ip}/{protocol}/{port}"))
|
addrs.append(Multiaddr(f"/ip6/{ip}/{protocol}/{port}"))
|
||||||
|
# Optionally ensure IPv6 loopback when any IPv6 present but loopback missing
|
||||||
|
if seen_v6 and "::1" not in seen_v6:
|
||||||
|
addrs.append(Multiaddr(f"/ip6/::1/{protocol}/{port}"))
|
||||||
|
|
||||||
# Fallback if nothing discovered
|
# Fallback if nothing discovered
|
||||||
if not addrs:
|
if not addrs:
|
||||||
|
|||||||
Reference in New Issue
Block a user