[tor-commits] [stem/master] Fix a bug because of which get_conf wouldn't work for HiddenService*

atagar at torproject.org atagar at torproject.org
Wed Jul 4 21:34:20 UTC 2012


commit ffd68ccc660a92cc3cff61ae8baafebb6799e52e
Author: Ravi Chandra Padmala <neenaoffline at gmail.com>
Date:   Mon Jul 2 09:39:35 2012 +0530

    Fix a bug because of which get_conf wouldn't work for HiddenService*
---
 stem/control.py      |   10 +++++++---
 stem/util/control.py |    6 ++----
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/stem/control.py b/stem/control.py
index 94427a7..61dd453 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -574,7 +574,10 @@ class Controller(BaseController):
     # automagically change the requested parameter if it's context sensitive
     # and cannot be returned on it's own.
     param = param.lower()
-    return self.get_conf_map(self._mapped_config_keys.get(param, param), default, multiple)[param]
+    entries = self.get_conf_map(self._mapped_config_keys.get(param, param), default, multiple)
+    if param in self._mapped_config_keys:
+      return entries[stem.util.control.case_insensitive_lookup(entries, param)]
+    else: return entries[param]
   
   def get_conf_map(self, param, default = UNDEFINED, multiple = True):
     """
@@ -629,13 +632,14 @@ class Controller(BaseController):
       response = self.msg("GETCONF %s" % ' '.join(param))
       stem.response.convert("GETCONF", response)
       
+      lookup = stem.util.control.case_insensitive_lookup
       # map the entries back to the parameters given so the capitalization
       # matches. Note: when the same configuration key is provided multiple
       # times, this uses the first one and ignores the rest.
       for key in response.entries:
         if not key.lower() in self._mapped_config_keys:
-          response.entries[stem.util.control.case_insensitive_lookup(param, key)] = response.entries[key]
-          if key != stem.util.control.case_insensitive_lookup(param, key): del response.entries[key]
+          response.entries[lookup(param, key)] = response.entries[key]
+          if key != lookup(param, key): del response.entries[key]
       
       requested_params = set(param)
       reply_params = set(response.entries.keys())
diff --git a/stem/util/control.py b/stem/util/control.py
index f6b0da0..5ea2efe 100644
--- a/stem/util/control.py
+++ b/stem/util/control.py
@@ -7,20 +7,18 @@ Helper functions utilized by the controller classes.
   case_insensitive_lookup - does case insensitive lookups on python dictionaries
 """
 
-def case_insensitive_lookup(lst, key, start=None, stop=None):
+def case_insensitive_lookup(lst, key):
   """
   Returns the first value equal to key in lst while ignoring case.
   
   :param list lst: list of strings
   :param str key: string to be looked up
-  :param int start: index from where the lookup should begin
-  :param int stop: index where the lookup ends
   
   :returns: case-insensitive equivalent of key in lst
   
   :raises: ValueError if such a key doesn't exist
   """
   
-  for i in lst[start:stop]:
+  for i in lst:
     if i.lower() == key.lower():
       return i





More information about the tor-commits mailing list