Optimize getOnion function with less lock
This commit is contained in:
parent
00972f5d73
commit
468666cdc8
1 changed files with 13 additions and 10 deletions
|
@ -312,18 +312,21 @@ class TorManager(object):
|
||||||
return CryptRsa.privatekeyToPublickey(self.privatekeys[address])
|
return CryptRsa.privatekeyToPublickey(self.privatekeys[address])
|
||||||
|
|
||||||
def getOnion(self, site_address):
|
def getOnion(self, site_address):
|
||||||
with self.lock:
|
|
||||||
if not self.enabled:
|
if not self.enabled:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if config.tor == "always": # Different onion for every site
|
if config.tor == "always": # Different onion for every site
|
||||||
onion = self.site_onions.get(site_address)
|
onion = self.site_onions.get(site_address)
|
||||||
else: # Same onion for every site
|
else: # Same onion for every site
|
||||||
onion = self.site_onions.get("global")
|
onion = self.site_onions.get("global")
|
||||||
site_address = "global"
|
site_address = "global"
|
||||||
|
|
||||||
if not onion:
|
if not onion:
|
||||||
|
with self.lock:
|
||||||
self.site_onions[site_address] = self.addOnion()
|
self.site_onions[site_address] = self.addOnion()
|
||||||
onion = self.site_onions[site_address]
|
onion = self.site_onions[site_address]
|
||||||
self.log.debug("Created new hidden service for %s: %s" % (site_address, onion))
|
self.log.debug("Created new hidden service for %s: %s" % (site_address, onion))
|
||||||
|
|
||||||
return onion
|
return onion
|
||||||
|
|
||||||
# Creates and returns a
|
# Creates and returns a
|
||||||
|
|
Loading…
Reference in a new issue