From 468666cdc8e85b5bdaa59c3aaf02f99b479b2993 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sun, 20 Jan 2019 16:51:42 +0100 Subject: [PATCH] Optimize getOnion function with less lock --- src/Tor/TorManager.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Tor/TorManager.py b/src/Tor/TorManager.py index 2f1a9efa..70d6c015 100644 --- a/src/Tor/TorManager.py +++ b/src/Tor/TorManager.py @@ -312,19 +312,22 @@ class TorManager(object): return CryptRsa.privatekeyToPublickey(self.privatekeys[address]) def getOnion(self, site_address): - with self.lock: - if not self.enabled: - return None - if config.tor == "always": # Different onion for every site - onion = self.site_onions.get(site_address) - else: # Same onion for every site - onion = self.site_onions.get("global") - site_address = "global" - if not onion: + if not self.enabled: + return None + + if config.tor == "always": # Different onion for every site + onion = self.site_onions.get(site_address) + else: # Same onion for every site + onion = self.site_onions.get("global") + site_address = "global" + + if not onion: + with self.lock: self.site_onions[site_address] = self.addOnion() onion = self.site_onions[site_address] self.log.debug("Created new hidden service for %s: %s" % (site_address, onion)) - return onion + + return onion # Creates and returns a # socket that has connected to the Tor Network