[tor-commits] [arm/master] Simplifying _getController() helper

atagar at torproject.org atagar at torproject.org
Sun Sep 15 22:29:21 UTC 2013


commit 03b72fd7946f6246ea41ab9182642ce2ece863ab
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Sep 8 16:44:04 2013 -0700

    Simplifying _getController() helper
    
    I'm still not happy with the _getController() function, but at least now it's a
    tad better...
---
 arm/starter.py |   45 +++++++++++++++++++++------------------------
 1 file changed, 21 insertions(+), 24 deletions(-)

diff --git a/arm/starter.py b/arm/starter.py
index 67fc5a6..5c51812 100644
--- a/arm/starter.py
+++ b/arm/starter.py
@@ -220,34 +220,31 @@ def _getController(controlAddr="127.0.0.1", controlPort=9051, passphrase=None, i
   """
   Custom handler for establishing a stem connection (... needs an overhaul).
   """
-  
-  controller = None
+
+  chroot = arm.util.torTools.getPathPrefix()
+
   try:
-    chroot = arm.util.torTools.getPathPrefix()
     controller = Controller.from_port(controlAddr, controlPort)
-    
+  except stem.SocketError as exc:
+    print exc
+    return None
+
+  try:
+    controller.authenticate(password = passphrase, chroot_path = chroot)
+  except stem.connection.MissingPassword:
     try:
+      passphrase = getpass.getpass("Controller password: ")
       controller.authenticate(password = passphrase, chroot_path = chroot)
-    except stem.connection.MissingPassword:
-      try:
-        passphrase = getpass.getpass("Controller password: ")
-        controller.authenticate(password = passphrase, chroot_path = chroot)
-      except:
-        return None
-    
-    return controller
-  except Exception, exc:
-    if controller: controller.close()
-    
-    if passphrase and str(exc) == "Unable to authenticate: password incorrect":
-      # provide a warning that the provided password didn't work, then try
-      # again prompting for the user to enter it
-      print incorrectPasswordMsg
-      return _getController(controlAddr, controlPort)
-    else:
-      print exc
-    
-    return None
+    except:
+      # Huh? The old version just silently failed when it got an incorrect password?
+      return None
+  except stem.connection.IncorrectPassword:
+    # provide a warning that the provided password didn't work, then try
+    # again prompting for the user to enter it
+    print incorrectPasswordMsg
+    return _getController(controlAddr, controlPort)
+
+  return controller
 
 def _dumpConfig():
   """





More information about the tor-commits mailing list