handle ip addresses given as reflector servers

This commit is contained in:
Jack Robison 2017-08-03 22:06:12 -04:00
parent 0bdcab1166
commit d5f2481af5
No known key found for this signature in database
GPG key ID: 284699E7404E3CFF

View file

@ -5,11 +5,29 @@ from lbrynet import conf
from lbrynet.reflector import ClientFactory, BlobClientFactory
def _is_ip(host):
try:
if len(host.split(".")) == 4 and all([0 <= int(x) <= 255 for x in host.split(".")]):
return True
return False
except ValueError:
return False
@defer.inlineCallbacks
def resolve(host):
if _is_ip(host):
ip = host
else:
ip = yield reactor.resolve(host)
defer.returnValue(ip)
@defer.inlineCallbacks
def _reflect_stream(lbry_file, reflector_server):
reflector_address, reflector_port = reflector_server[0], reflector_server[1]
factory = ClientFactory(lbry_file)
ip = yield reactor.resolve(reflector_address)
ip = yield resolve(reflector_address)
yield reactor.connectTCP(ip, reflector_port, factory)
yield factory.finished_deferred
@ -18,7 +36,7 @@ def _reflect_stream(lbry_file, reflector_server):
def _reflect_blobs(blob_manager, blob_hashes, reflector_server):
reflector_address, reflector_port = reflector_server[0], reflector_server[1]
factory = BlobClientFactory(blob_manager, blob_hashes)
ip = yield reactor.resolve(reflector_address)
ip = yield resolve(reflector_address)
yield reactor.connectTCP(ip, reflector_port, factory)
yield factory.finished_deferred