[tor-commits] [stem/master] Lazyloading server descriptor exit policy
atagar at torproject.org
atagar at torproject.org
Sun Jan 25 22:37:33 UTC 2015
commit eff8ecec5381f852317638b1ebc8f6893a955761
Author: Damian Johnson <atagar at torproject.org>
Date: Mon Jan 5 07:40:19 2015 -0800
Lazyloading server descriptor exit policy
Oops, missed this attribute since it's not part of our parse method.
Lazyloading this one's actually pretty impaceful, shaving off another 0.5s from
my runtimes (a 13% improvement).
---
stem/descriptor/server_descriptor.py | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index f936d13..e8d6e74 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -457,16 +457,17 @@ class ServerDescriptor(Descriptor):
entries, policy = _get_descriptor_components(raw_contents, validate, ('accept', 'reject'))
- if policy == [str_type('reject *:*')]:
- self.exit_policy = REJECT_ALL_POLICY
- else:
- self.exit_policy = stem.exit_policy.ExitPolicy(*policy)
-
if validate:
+ if policy == [str_type('reject *:*')]:
+ self.exit_policy = REJECT_ALL_POLICY
+ else:
+ self.exit_policy = stem.exit_policy.ExitPolicy(*policy)
+
self._parse(entries, validate)
self._check_constraints(entries)
else:
self._entries = entries
+ self._exit_policy_list = policy
def digest(self):
"""
@@ -717,6 +718,13 @@ class ServerDescriptor(Descriptor):
_parse_history_line(self, self._entries['read-history'][0][0], True)
elif name in ('write_history_end', 'write_history_interval', 'write_history_values'):
_parse_history_line(self, self._entries['write-history'][0][0], False)
+ elif name == 'exit_policy':
+ if self._exit_policy_list == [str_type('reject *:*')]:
+ self.exit_policy = REJECT_ALL_POLICY
+ else:
+ self.exit_policy = stem.exit_policy.ExitPolicy(*self._exit_policy_list)
+
+ del self._exit_policy_list
except (ValueError, KeyError):
if name == 'exit_policy_v6':
default = DEFAULT_IPV6_EXIT_POLICY
More information about the tor-commits
mailing list