[tor-commits] [ooni-probe/master] DNS-host-resolution-for-tls_handshake

art at torproject.org art at torproject.org
Thu Feb 20 12:10:12 UTC 2014


commit 0f855458315fcb2838b630c1f17eb83bebb7a5cf
Author: Arun Pandian G <arunpandianp at gmail.com>
Date:   Thu Feb 6 17:38:00 2014 +0530

    DNS-host-resolution-for-tls_handshake
---
 ooni/nettests/experimental/tls_handshake.py |   28 ++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/ooni/nettests/experimental/tls_handshake.py b/ooni/nettests/experimental/tls_handshake.py
index c3da9a9..7da291a 100644
--- a/ooni/nettests/experimental/tls_handshake.py
+++ b/ooni/nettests/experimental/tls_handshake.py
@@ -23,6 +23,8 @@
 
 from socket import error   as socket_error
 from socket import timeout as socket_timeout
+from socket import inet_aton as socket_inet_aton
+from socket import gethostbyname as socket_gethostbyname
 from time   import sleep
 
 import os
@@ -105,6 +107,10 @@ class HostUnreachableError(Exception):
     """Raised when the host IP address appears to be unreachable."""
     pass
 
+class HostUnresolveableError(Exception):
+    """Raised when the host IP address appears to be unreachable."""
+    pass
+
 class ConnectionTimeout(Exception):
     """Raised when we receive a :class:`socket.timeout <timeout>`, in order to
     pass the Exception along to
@@ -212,9 +218,26 @@ class HandshakeTest(nettest.NetTestCase):
 
         ## We have to set the default timeout on our sockets before creation:
         socket.setdefaulttimeout(self.timeout)
+    def isIP(self,addr):
+        try:
+            socket_inet_aton(addr)
+            return True
+        except socket_error:
+            return False
+
+    def resolveHost(self,addr):
+        try:
+            return socket_gethostbyname(addr)
+        except socket_error:
+            raise HostUnresolveableError
 
     def splitInput(self, input):
         addr, port = input.strip().rsplit(':', 1)
+
+        #if addr is hostname it is resolved to ip
+        if not self.isIP(addr):
+            addr=self.resolveHost(addr)
+
         if self.localOptions['port']:
             port = self.localOptions['port']
         return (str(addr), int(port))
@@ -227,7 +250,10 @@ class HandshakeTest(nettest.NetTestCase):
                 for line in fh.readlines():
                     if line.startswith('#'):
                         continue
-                    yield self.splitInput(line)
+                    try:
+                        yield self.splitInput(line)
+                    except HostUnresolveableError:
+                        continue
 
     def buildSocket(self, addr):
         global s





More information about the tor-commits mailing list