Merge branch 'better-peer-ping'
This commit is contained in:
commit
ae67918c8a
2 changed files with 20 additions and 9 deletions
|
@ -35,6 +35,7 @@ at anytime.
|
|||
* unittests for `ComponentManager`
|
||||
* script to generate docs/api.json file (https://github.com/lbryio/lbry.tech/issues/42)
|
||||
* additional information to the balance error message when editing a claim (https://github.com/lbryio/lbry/pull/1309)
|
||||
* `address` and `port` arguments to `peer_ping` (https://github.com/lbryio/lbry/issues/1313)
|
||||
|
||||
### Removed
|
||||
* most of the internal attributes from `Daemon`
|
||||
|
|
|
@ -2820,26 +2820,36 @@ class Daemon(AuthJSONRPCServer):
|
|||
|
||||
@requires(DHT_COMPONENT)
|
||||
@defer.inlineCallbacks
|
||||
def jsonrpc_peer_ping(self, node_id):
|
||||
def jsonrpc_peer_ping(self, node_id, address=None, port=None):
|
||||
"""
|
||||
Find and ping a peer by node id
|
||||
Send a kademlia ping to the specified peer. If address and port are provided the peer is directly pinged,
|
||||
if not provided the peer is located first.
|
||||
|
||||
Usage:
|
||||
peer_ping (<node_id> | --node_id=<node_id>)
|
||||
peer_ping (<node_id> | --node_id=<node_id>) [<address> | --address=<address>] [<port> | --port=<port>]
|
||||
|
||||
Options:
|
||||
None
|
||||
--address=<address> : (str) ip address of the peer
|
||||
--port=<port> : (int) udp port of the peer
|
||||
|
||||
|
||||
Returns:
|
||||
(str) pong, or {'error': <error message>} if an error is encountered
|
||||
"""
|
||||
|
||||
contact = None
|
||||
try:
|
||||
contact = yield self.dht_node.findContact(node_id.decode('hex'))
|
||||
except TimeoutError:
|
||||
result = {'error': 'timeout finding peer'}
|
||||
defer.returnValue(result)
|
||||
if node_id and address and port:
|
||||
contact = self.dht_node.contact_manager.get_contact(node_id.decode('hex'), address, int(port))
|
||||
if not contact:
|
||||
contact = self.dht_node.contact_manager.make_contact(
|
||||
node_id.decode('hex'), address, int(port), self.dht_node._protocol
|
||||
)
|
||||
if not contact:
|
||||
try:
|
||||
contact = yield self.dht_node.findContact(node_id.decode('hex'))
|
||||
except TimeoutError:
|
||||
result = {'error': 'timeout finding peer'}
|
||||
defer.returnValue(result)
|
||||
if not contact:
|
||||
defer.returnValue({'error': 'peer not found'})
|
||||
try:
|
||||
|
|
Loading…
Reference in a new issue