[tor-commits] [stem/master] Reintroducing tuple support to get_options
atagar at torproject.org
atagar at torproject.org
Sun Jul 8 20:14:44 UTC 2012
commit e2057f1beb158ce111ddc735c8b1a58fab79f6d1
Author: Damian Johnson <atagar at torproject.org>
Date: Sat Jul 7 19:26:56 2012 -0700
Reintroducing tuple support to get_options
Damn I hate it when I'm right. The reason that arm supported tuple lists is the
fucking HiddenService* options. Adding support for them back in, though I gotta
admit that I flirted with the idea of just saying "screw hidden services".
These things are such a hack...
---
stem/control.py | 11 +++++++++--
test/integ/control/controller.py | 24 ++++++++++++------------
2 files changed, 21 insertions(+), 14 deletions(-)
diff --git a/stem/control.py b/stem/control.py
index f377cd3..ccfeb94 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -703,7 +703,11 @@ class Controller(BaseController):
"Log": None,
})
- :param dict params: mapping of configuration options to the values we're setting it to
+ The params can optionally be a list a key/value tuples, though the only
+ reason this type of arguement would be useful is for hidden service
+ configuration (those options are order dependent).
+
+ :param dict,list params: mapping of configuration options to the values we're setting it to
:param bool reset: issues a SETCONF if False, and RESETCONF if True
:raises:
@@ -715,7 +719,10 @@ class Controller(BaseController):
# constructs the SETCONF or RESETCONF query
query_comp = ["RESETCONF" if reset else "SETCONF"]
- for param, value in params.items():
+ if isinstance(params, dict):
+ params = params.items()
+
+ for param, value in params:
if isinstance(value, str):
query_comp.append("%s=\"%s\"" % (param, value.strip()))
elif value:
diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index b7eea7e..3a15634 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -242,23 +242,23 @@ class TestController(unittest.TestCase):
except stem.socket.InvalidArguments, exc:
self.assertEqual(["bombay"], exc.arguments)
- # context-sensitive keys
- controller.set_options({
- "HiddenServiceDir": tmpdir,
- "HiddenServicePort": "17234 127.0.0.1:17235",
- })
+ # context-sensitive keys (the only retched things for which order matters)
+ controller.set_options((
+ ("HiddenServiceDir", tmpdir),
+ ("HiddenServicePort", "17234 127.0.0.1:17235"),
+ ))
self.assertEqual(tmpdir, controller.get_conf("HiddenServiceDir"))
self.assertEqual("17234 127.0.0.1:17235", controller.get_conf("HiddenServicePort"))
finally:
# reverts configuration changes
- controller.set_options({
- "ExitPolicy": "reject *:*",
- "ConnLimit": None,
- "ContactInfo": None,
- "HiddenServiceDir": None,
- "HiddenServicePort": None,
- }, reset = True)
+ controller.set_options((
+ ("ExitPolicy", "reject *:*"),
+ ("ConnLimit", None),
+ ("ContactInfo", None),
+ ("HiddenServiceDir", None),
+ ("HiddenServicePort", None),
+ ), reset = True)
shutil.rmtree(tmpdir)
More information about the tor-commits
mailing list