[tor-commits] [onionperf/master] Handles get_ip_address() output in case of dns failure

irl at torproject.org irl at torproject.org
Mon Mar 4 14:57:06 UTC 2019


commit 2ea0296ebe7accd9842589902c0c6668cd8b8d5e
Author: Ana Custura <ana at nestat.org.uk>
Date:   Thu Feb 28 15:52:10 2019 +0100

    Handles get_ip_address() output in case of dns failure
---
 onionperf/util.py | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/onionperf/util.py b/onionperf/util.py
index d4aebcf..c35e638 100644
--- a/onionperf/util.py
+++ b/onionperf/util.py
@@ -129,10 +129,29 @@ def find_ip_address_local():
     return ip_address
  
 def get_ip_address():
-    data = urllib.urlopen('https://check.torproject.org/').read()
-    ip_address = find_ip_address_url(data) 
-    if ip_address is None:
-        ip_address = find_ip_address_local() 
+    """
+    Determines the public IPv4 address of the vantage point using the
+    check.torproject.org service. If it is not possible to reach the service,
+    or to parse the result recieved, it will fall back to determining the local
+    IP address used for outbound connections.
+    """
+    ip_address = None
+    try:
+        data = urllib.urlopen('https://check.torproject.org/').read()
+        ip_address = find_ip_address_url(data)
+        if ip_address is None:
+            logging.error(
+                "Unable to determine IP address from check.torproject.org. "
+                "The site was successfully contacted but the result could "
+                "not be parsed. Maybe the service is down? Falling back to "
+                "finding your IP locally...")
+            ip_address = find_ip_address_local()
+    except IOError:
+        logging.warning(
+            "An IOError occured attempting to contact check.torproject.org. "
+            "This will affect measurements unless your machine has a public "
+            "IP address. Falling back to finding your IP locally...")
+        ip_address = find_ip_address_local()
     return ip_address
 
 def get_random_free_port():



More information about the tor-commits mailing list