From 5cb4479534bbbe3b7002828161185c9b189a1e27 Mon Sep 17 00:00:00 2001 From: Alex Stokes Date: Tue, 5 Nov 2019 17:06:54 -0800 Subject: [PATCH] Modify the ``KademliaServer`` so that lack of port lets the OS choose a free one --- libp2p/kademlia/network.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libp2p/kademlia/network.py b/libp2p/kademlia/network.py index f0a4991e..f93ca09e 100644 --- a/libp2p/kademlia/network.py +++ b/libp2p/kademlia/network.py @@ -55,7 +55,7 @@ class KademliaServer: def _create_protocol(self): return self.protocol_class(self.node, self.storage, self.ksize) - async def listen(self, port, interface="0.0.0.0"): + async def listen(self, port=0, interface="0.0.0.0"): """ Start listening on the given port. @@ -65,8 +65,15 @@ class KademliaServer: listen = loop.create_datagram_endpoint( self._create_protocol, local_addr=(interface, port) ) - log.info("Node %i listening on %s:%i", self.node.xor_id, interface, port) self.transport, self.protocol = await listen + socket = self.transport.get_extra_info("socket") + self.address = socket.getsockname() + log.info( + "Node %i listening on %s:%i", + self.node.xor_id, + self.address[0], + self.address[1], + ) # finally, schedule refreshing table self.refresh_table()