[tor-commits] [arm/release] Moving torrc log load warnings to the torrc class

atagar at torproject.org atagar at torproject.org
Sun Jul 17 06:08:20 UTC 2011


commit 072fcb45439099e61716bb3edfee8cbc81f6887a
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri May 13 19:04:51 2011 -0700

    Moving torrc log load warnings to the torrc class
    
    Minor refactoring change so warnings are an option of the load method.
---
 src/cli/controller.py |   16 +++++-----------
 src/util/torConfig.py |   15 ++++++++++++++-
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/cli/controller.py b/src/cli/controller.py
index eb1df4f..d44b811 100644
--- a/src/cli/controller.py
+++ b/src/cli/controller.py
@@ -96,8 +96,7 @@ PAGES = [
   ["config"],
   ["torrc"]]
 
-CONFIG = {"log.torrc.readFailed": log.WARN,
-          "features.graph.type": 1,
+CONFIG = {"features.graph.type": 1,
           "queries.refreshRate.rate": 5,
           "log.torEventTypeUnrecognized": log.NOTICE,
           "features.graph.bw.prepopulate": True,
@@ -286,11 +285,8 @@ def drawTorMonitor(stdscr, startTime, loggedEvents, isBlindMode):
   loadedTorrc = torConfig.getTorrc()
   loadedTorrc.getLock().acquire()
   
-  try:
-    loadedTorrc.load()
-  except IOError, exc:
-    msg = "Unable to load torrc (%s)" % sysTools.getFileErrorMsg(exc)
-    log.log(CONFIG["log.torrc.readFailed"], msg)
+  try: loadedTorrc.load(True)
+  except: pass
   
   if loadedTorrc.isLoaded():
     corrections = loadedTorrc.getCorrections()
@@ -504,11 +500,9 @@ def drawTorMonitor(stdscr, startTime, loggedEvents, isBlindMode):
         # reload the torrc if it's previously been loaded
         if loadedTorrc.isLoaded():
           try:
-            loadedTorrc.load()
+            loadedTorrc.load(True)
             if page == 3: panels["torrc"].redraw(True)
-          except IOError, exc:
-            msg = "Unable to load torrc (%s)" % sysTools.getFileErrorMsg(exc)
-            log.log(CONFIG["log.torrc.readFailed"], msg)
+          except: pass
         
         sighupTracker.isReset = False
       
diff --git a/src/util/torConfig.py b/src/util/torConfig.py
index 4a25f0f..a083099 100644
--- a/src/util/torConfig.py
+++ b/src/util/torConfig.py
@@ -22,6 +22,7 @@ CONFIG = {"features.torrc.validate": True,
           "torrc.label.time.hour": [],
           "torrc.label.time.day": [],
           "torrc.label.time.week": [],
+          "log.torrc.readFailed": log.WARN,
           "log.configDescriptions.unrecognizedCategory": log.NOTICE}
 
 # enums and values for numeric torrc entries
@@ -616,11 +617,18 @@ class Torrc():
     self.displayableContents = None
     self.strippedContents = None
     self.corrections = None
+    
+    # flag to indicate if we've given a load failure warning before
+    self.isLoadFailWarned = False
   
-  def load(self):
+  def load(self, logFailure = False):
     """
     Loads or reloads the torrc contents, raising an IOError if there's a
     problem.
+    
+    Arguments:
+      logFailure - if the torrc fails to load and we've never provided a
+                   warning for this before then logs a warning
     """
     
     self.valsLock.acquire()
@@ -637,6 +645,11 @@ class Torrc():
       self.contents = configFile.readlines()
       configFile.close()
     except IOError, exc:
+      if logFailure and not self.isLoadFailWarned:
+        msg = "Unable to load torrc (%s)" % sysTools.getFileErrorMsg(exc)
+        log.log(CONFIG["log.torrc.readFailed"], msg)
+        self.isLoadFailWarned = True
+      
       self.valsLock.release()
       raise exc
     





More information about the tor-commits mailing list