Optimize getOnion function with less lock

This commit is contained in:
shortcutme 2019-01-20 16:51:42 +01:00
parent 00972f5d73
commit 468666cdc8
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -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