commit 1161a6a6e72dff62fe019b9d15cc0943958359f7 Author: Damian Johnson atagar@torproject.org Date: Mon Apr 25 19:13:43 2011 -0700
Dropping locales when geoip db is unavailable
Previously the connection panel showed '??' for all locales when the geoip database was unavailable. Dropping these entries from the interface entirely instead. --- src/interface/connections/connEntry.py | 3 ++- src/util/torTools.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/interface/connections/connEntry.py b/src/interface/connections/connEntry.py index f613fc2..e6c0d92 100644 --- a/src/interface/connections/connEntry.py +++ b/src/interface/connections/connEntry.py @@ -824,8 +824,9 @@ class ConnectionLine(entries.ConnectionPanelLine): dstAddress += " (%s)" % purpose elif not connections.isIpAddressPrivate(self.foreign.getIpAddr()): extraInfo = [] + conn = torTools.getConn()
- if includeLocale: + if includeLocale and not conn.isGeoipUnavailable(): foreignLocale = self.foreign.getLocale("??") extraInfo.append(foreignLocale) spaceAvailable -= len(foreignLocale) + 2 diff --git a/src/util/torTools.py b/src/util/torTools.py index 31a7061..0eebd20 100644 --- a/src/util/torTools.py +++ b/src/util/torTools.py @@ -474,19 +474,19 @@ class Controller(TorCtl.PostEventListener): if isCacheArg and cachedValue: result = cachedValue isFromCache = True - elif isGeoipRequest and self.geoipFailureCount == GEOIP_FAILURE_THRESHOLD: + elif isGeoipRequest and self.isGeoipUnavailable(): # the geoip database aleady looks to be unavailable - abort the request raisedExc = TorCtl.ErrorReply("Tor geoip database is unavailable.") else: try: getInfoVal = self.conn.get_info(param)[param] if getInfoVal != None: result = getInfoVal - if isGeoipRequest: self.geoipFailureCount = 0 + if isGeoipRequest: self.geoipFailureCount = -1 except (socket.error, TorCtl.ErrorReply, TorCtl.TorCtlClosed), exc: if type(exc) == TorCtl.TorCtlClosed: self.close() raisedExc = exc
- if isGeoipRequest: + if isGeoipRequest and not self.geoipFailureCount == -1: self.geoipFailureCount += 1
if self.geoipFailureCount == GEOIP_FAILURE_THRESHOLD: @@ -833,6 +833,14 @@ class Controller(TorCtl.PostEventListener):
return result
+ def isGeoipUnavailable(self): + """ + Provides true if we've concluded that our geoip database is unavailable, + false otherwise. + """ + + return self.geoipFailureCount == GEOIP_FAILURE_THRESHOLD + def getMyPid(self): """ Provides the pid of the attached tor process (None if no controller exists
tor-commits@lists.torproject.org