[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [arm/release] fix: uncaught exceptions when resuming borken conf



commit 1c0c1f3029fbde3441c881930b292a0176d4e02d
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date:   Sat Jul 9 23:19:34 2011 -0700

    fix: uncaught exceptions when resuming borken conf
    
    When selecting 'Use Last Configuration' in the wizard or 'Start Tor' from the
    menu when the last torrc was broken caused uncaught exceptions. It's actually
    better if the starter function did logging itself instead so passing on a
    success boolean instead.
---
 src/cli/controller.py |   23 +++++++++++++++++------
 src/cli/wizard.py     |   18 +++++++-----------
 2 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/src/cli/controller.py b/src/cli/controller.py
index a04bf99..e30af3f 100644
--- a/src/cli/controller.py
+++ b/src/cli/controller.py
@@ -459,7 +459,8 @@ class TorManager:
   
   def startManagedInstance(self):
     """
-    Starts a managed instance of tor, raising an IOError if unsuccessful.
+    Starts a managed instance of tor, logging a warning if unsuccessful. This
+    returns True if successful and False otherwise.
     """
     
     torrcLoc = self.getTorrcPath()
@@ -472,16 +473,26 @@ class TorManager:
     while not torctlConn and time.time() - startTime < 5:
       try:
         torctlConn, authType, authValue = TorCtl.preauth_connect(controlPort = int(CONFIG["wizard.default"]["Control"]))
-      except IOError, exc: time.sleep(0.5)
+      except IOError: time.sleep(0.5)
     
     if not torctlConn:
-      raise IOError("try running \"tor -f %s\" for error output" % torrcLoc)
+      msg = "Unable to start tor, try running \"tor -f %s\" to see the error output" % torrcLoc
+      log.log(log.WARN, msg)
+      return False
     
     if authType == TorCtl.AUTH_TYPE.COOKIE:
-      torctlConn.authenticate(authValue)
-      torTools.getConn().init(torctlConn)
+      try:
+        torctlConn.authenticate(authValue)
+        torTools.getConn().init(torctlConn)
+        return True
+      except Exception, exc:
+        msg = "Unable to connect to Tor: %s" % exc
+        log.log(log.WARN, msg)
+        return False
     else:
-      raise IOError("unexpected authentication type '%s'" % authType)
+      msg = "Unable to connect to Tor, unexpected authentication type '%s'" % authType
+      log.log(log.WARN, msg)
+      return False
 
 def shutdownDaemons():
   """
diff --git a/src/cli/wizard.py b/src/cli/wizard.py
index 6d2e623..be7ac8a 100644
--- a/src/cli/wizard.py
+++ b/src/cli/wizard.py
@@ -294,17 +294,13 @@ def showWizard():
           torrcFile.write(generatedTorrc)
           torrcFile.close()
           
-          try:
-            conn = torTools.getConn()
-            
-            # If we're connected to a managed instance then just need to
-            # issue a sighup to pick up the new settings. Otherwise starts
-            # a new tor instance.
-            
-            if manager.isManaged(conn): conn.reset()
-            else: manager.startManagedInstance()
-          except IOError, exc:
-            log.log(log.WARN, "Unable to start tor, %s" % exc)
+          # If we're connected to a managed instance then just need to
+          # issue a sighup to pick up the new settings. Otherwise starts
+          # a new tor instance.
+          
+          conn = torTools.getConn()
+          if manager.isManaged(conn): conn.reset()
+          else: manager.startManagedInstance()
           
           break
         elif confirmationSelection == CANCEL: break



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits