From 618d5b8515550a1b2d89e1cd045f7fba271f9374 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Mon, 10 Aug 2026 00:12:40 +0200 Subject: fix(node): QuicChunkClient local_port + QuicChunkServer dual-stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit local_port=0 param on QuicChunkClient — specify for Port-Restricted Cone NAT hole punching (client must send from the same port the node probed to). QuicChunkServer default host '::' for IPv4+IPv6 dual-stack on Linux. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../src/meshbay_node/transport/quic_client.py | 17 ++++++++++------- .../src/meshbay_node/transport/quic_server.py | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'packages/meshbay-node/src/meshbay_node') diff --git a/packages/meshbay-node/src/meshbay_node/transport/quic_client.py b/packages/meshbay-node/src/meshbay_node/transport/quic_client.py index 6041fef..a2220ff 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/quic_client.py +++ b/packages/meshbay-node/src/meshbay_node/transport/quic_client.py @@ -100,16 +100,18 @@ class QuicChunkClient: jwt_token: str, gek: bytes, pk_node_b64: str, + local_port: int = 0, # 0 = OS choisit; spécifier pour hole punching Port-Restricted ): - self._host = host - self._port = port - self._jwt_token = jwt_token - self._gek = gek - self._pk_node = Ed25519PublicKey.from_public_bytes( + self._host = host + self._port = port + self._jwt_token = jwt_token + self._gek = gek + self._local_port = local_port + self._pk_node = Ed25519PublicKey.from_public_bytes( base64.b64decode(pk_node_b64)) self._proto: _MNPClientProtocol | None = None - self._cm = None - self._ctrl_stream = 0 # stream 0 = control/handshake + self._cm = None + self._ctrl_stream = 0 async def __aenter__(self): await self.connect() @@ -129,6 +131,7 @@ class QuicChunkClient: self._host, self._port, configuration=config, create_protocol=_MNPClientProtocol, + local_port=self._local_port, # 0 = aléatoire; local_port=X pour hole punching ) self._proto = await self._cm.__aenter__() diff --git a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py index 2d23da2..8ab359d 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/quic_server.py +++ b/packages/meshbay-node/src/meshbay_node/transport/quic_server.py @@ -228,7 +228,7 @@ class QuicChunkServer: gek: bytes, shared_root: Path, index: GroupIndex, - host: str = "0.0.0.0", + host: str = "::", # écoute IPv4 + IPv6 (dual-stack Linux) port: int = 19000, cert_path: Path | None = None, key_path: Path | None = None, -- cgit v1.2.3