commit 388abe5d8b31b9c735569dbe0728b54e6111ee30 Author: Damian Johnson atagar@torproject.org Date: Sun Jun 19 15:11:54 2011 -0700
fix: skipping init actions that will fail
When we start and are detached from tor many actions (bandwidth prepopulation and loading the torrc, for instance) will always fail. Skipping these actions if there's no tor instance to avoid pointless work and log messages. --- src/cli/configPanel.py | 4 +--- src/cli/controller.py | 11 ++--------- src/cli/torrcPanel.py | 14 ++++++++++++-- 3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/src/cli/configPanel.py b/src/cli/configPanel.py index 33cec34..d76a528 100644 --- a/src/cli/configPanel.py +++ b/src/cli/configPanel.py @@ -201,9 +201,7 @@ class ConfigPanel(panel.Panel): # initializes config contents if we're connected conn = torTools.getConn() conn.addStatusListener(self.resetListener) - - if conn.isAlive(): - self.resetListener(conn, torTools.State.INIT) + if conn.isAlive(): self.resetListener(conn, torTools.State.INIT)
def resetListener(self, conn, eventType): # fetches configuration options if a new instance, otherewise keeps our diff --git a/src/cli/controller.py b/src/cli/controller.py index 51fbe2b..e20e023 100644 --- a/src/cli/controller.py +++ b/src/cli/controller.py @@ -110,7 +110,7 @@ def initController(stdscr, startTime): except ValueError: pass # invalid stats, maybe connections when in blind mode
# prepopulates bandwidth values from state file - if CONFIG["features.graph.bw.prepopulate"]: + if CONFIG["features.graph.bw.prepopulate"] and torTools.getConn().isAlive(): isSuccessful = bwStats.prepopulateFromState() if isSuccessful: graphPanel.updateInterval = 4
@@ -461,7 +461,7 @@ def startTorMonitor(startTime): conn = torTools.getConn() torPid = conn.getMyPid()
- if not torPid: + if not torPid and conn.isAlive(): msg = "Unable to determine Tor's pid. Some information, like its resource usage will be unavailable." log.log(CONFIG["log.unknownTorPid"], msg)
@@ -490,13 +490,6 @@ def startTorMonitor(startTime): # hack to display a better (arm specific) notice if all resolvers fail connections.RESOLVER_FINAL_FAILURE_MSG += " (connection related portions of the monitor won't function)"
- # loads the torrc and provides warnings in case of validation errors - try: - loadedTorrc = torConfig.getTorrc() - loadedTorrc.load(True) - loadedTorrc.logValidationIssues() - except IOError: pass - # provides a notice about any event types tor supports but arm doesn't missingEventTypes = cli.logPanel.getMissingEventTypes()
diff --git a/src/cli/torrcPanel.py b/src/cli/torrcPanel.py index 2dc244f..c1bb3f9 100644 --- a/src/cli/torrcPanel.py +++ b/src/cli/torrcPanel.py @@ -42,7 +42,9 @@ class TorrcPanel(panel.Panel): self._lastContentHeightArgs = None
# listens for tor reload (sighup) events - torTools.getConn().addStatusListener(self.resetListener) + conn = torTools.getConn() + conn.addStatusListener(self.resetListener) + if conn.isAlive(): self.resetListener(conn, torTools.State.INIT)
def resetListener(self, conn, eventType): """ @@ -53,7 +55,15 @@ class TorrcPanel(panel.Panel): eventType - type of event detected """
- if eventType in (torTools.State.INIT, torTools.State.RESET): + if eventType == torTools.State.INIT: + # loads the torrc and provides warnings in case of validation errors + try: + loadedTorrc = torConfig.getTorrc() + loadedTorrc.load(True) + loadedTorrc.logValidationIssues() + self.redraw(True) + except: pass + elif eventType == torTools.State.RESET: try: torConfig.getTorrc().load(True) self.redraw(True)
tor-commits@lists.torproject.org