From 0fca867ec09a1c80d0599edf7591164b7a00c71d Mon Sep 17 00:00:00 2001 From: Miroslav Kovar Date: Wed, 20 Sep 2017 22:52:16 +0200 Subject: [PATCH 1/3] Modified check_connection() to try bypassing DNS before giving up. --- CHANGELOG.md | 1 + lbrynet/core/utils.py | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 948c71531..e19a14d4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ at anytime. ### Fixed * Fixed `transaction_list` doc string * Fixed ([in lbryum](https://github.com/lbryio/lbryum/pull/156)) batched queries responsible for making transaction and tip histories slow + * Fixed daemon refusing to start if DNS cannot resolve lbry.io domain. ### Changed * Bumped `lbryum` requirement to 3.1.8 [see changelog](https://github.com/lbryio/lbryum/blob/master/CHANGELOG.md#318---2017-09-20) diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index 9dd629d92..a6049f470 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -94,14 +94,29 @@ def obfuscate(plain): return base64.b64encode(plain).encode('rot13') -def check_connection(server="lbry.io", port=80): +def check_connection(server="lbry.io", port=80, timeout=2, bypass_dns=False): """Attempts to open a socket to server:port and returns True if successful.""" + log.debug('Checking connection to %s:%s', server, port) try: - log.debug('Checking connection to %s:%s', server, port) - host = socket.gethostbyname(server) - s = socket.create_connection((host, port), 2) + if not bypass_dns: + server = socket.gethostbyname(server) + socket.create_connection((server, port), timeout) log.debug('Connection successful') return True + except (socket.gaierror, socket.herror) as ex: + log.info("Failed to connect to %s:%s. Unable to resolve domain. Trying to bypass DNS", + server, port, exc_info=True) + try: + server = "8.8.8.8" + port = 53 + socket.create_connection((server, port), timeout) + log.debug('Connection successful') + return True + except Exception as ex: + log.info( + "Failed to connect to %s:%s. Maybe the internet connection is not working", + server, port, exc_info=True) + return False except Exception as ex: log.info( "Failed to connect to %s:%s. Maybe the internet connection is not working", From f7aa478b9bcb333745eccd254e383c383d4a643b Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Tue, 31 Oct 2017 12:18:47 -0400 Subject: [PATCH 2/3] remove unused bypass_dns parameter --- lbrynet/core/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index a6049f470..09d7d3223 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -94,12 +94,11 @@ def obfuscate(plain): return base64.b64encode(plain).encode('rot13') -def check_connection(server="lbry.io", port=80, timeout=2, bypass_dns=False): +def check_connection(server="lbry.io", port=80, timeout=2): """Attempts to open a socket to server:port and returns True if successful.""" log.debug('Checking connection to %s:%s', server, port) try: - if not bypass_dns: - server = socket.gethostbyname(server) + server = socket.gethostbyname(server) socket.create_connection((server, port), timeout) log.debug('Connection successful') return True From cfd4a94450abc4bbbd947843625d1c7390af7bec Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Tue, 31 Oct 2017 12:18:55 -0400 Subject: [PATCH 3/3] logging --- lbrynet/core/utils.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index 09d7d3223..3fc867f4e 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -103,8 +103,8 @@ def check_connection(server="lbry.io", port=80, timeout=2): log.debug('Connection successful') return True except (socket.gaierror, socket.herror) as ex: - log.info("Failed to connect to %s:%s. Unable to resolve domain. Trying to bypass DNS", - server, port, exc_info=True) + log.warning("Failed to connect to %s:%s. Unable to resolve domain. Trying to bypass DNS", + server, port) try: server = "8.8.8.8" port = 53 @@ -112,14 +112,12 @@ def check_connection(server="lbry.io", port=80, timeout=2): log.debug('Connection successful') return True except Exception as ex: - log.info( - "Failed to connect to %s:%s. Maybe the internet connection is not working", - server, port, exc_info=True) + log.error("Failed to connect to %s:%s. Maybe the internet connection is not working", + server, port) return False except Exception as ex: - log.info( - "Failed to connect to %s:%s. Maybe the internet connection is not working", - server, port, exc_info=True) + log.error("Failed to connect to %s:%s. Maybe the internet connection is not working", + server, port) return False