mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-22 22:32:23 +00:00
key_generator: fix timing, make tests more robust
previously there was an edge case in the timing of expected behaviour of the key_generator (w.r.t. the refresh delay and twisted/foolscap delivery). if it took >6s for a key to be generated, then it was possible for the pool refresh delay to transpire _during_ the synchronous creation of a key in remote_get_rsa_key_pair. this could lead to the timer elapsing during key creation and hence the pool being refilled before control returned to the client. this change ensures that the time window from a get key request until the key gen reactor blocks to refill the pool is the time since a request was answered, not since a request was asked. this causes the behaviour to match expectations, as embodied in test_keygen, even if the delay window is dropped to 0.1s
This commit is contained in:
parent
c838cfef44
commit
30eaaa7862
@ -65,8 +65,9 @@ class KeyGenerator(service.MultiService, foolscap.Referenceable):
|
|||||||
def remote_get_rsa_key_pair(self, key_size):
|
def remote_get_rsa_key_pair(self, key_size):
|
||||||
self.vlog('%s remote_get_key' % (self,))
|
self.vlog('%s remote_get_key' % (self,))
|
||||||
if key_size != self.DEFAULT_KEY_SIZE or not self.keypool:
|
if key_size != self.DEFAULT_KEY_SIZE or not self.keypool:
|
||||||
|
key = self.gen_key(key_size)
|
||||||
self.reset_timer()
|
self.reset_timer()
|
||||||
return self.gen_key(key_size)
|
return key
|
||||||
else:
|
else:
|
||||||
self.reset_timer()
|
self.reset_timer()
|
||||||
return self.keypool.pop()
|
return self.keypool.pop()
|
||||||
|
Loading…
Reference in New Issue
Block a user