Browse Source

Optimize getOnion function with less lock

shortcutme 5 years ago
parent
commit
468666cdc8
1 changed files with 13 additions and 10 deletions
  1. 13 10
      src/Tor/TorManager.py

+ 13 - 10
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