aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-01-15 07:15:40 +0000
committerWerner Koch <[email protected]>2016-01-15 07:15:40 +0000
commit3cccd5a83b96e4558642dcdf5d974f64ebdb9817 (patch)
treef703605ce60e5793dd3ddb889d653ebea7b6d5a0
parentw32: Fix deadlock introduced by keybox_file_rename. (diff)
downloadgnupg-3cccd5a83b96e4558642dcdf5d974f64ebdb9817.tar.gz
gnupg-3cccd5a83b96e4558642dcdf5d974f64ebdb9817.zip
kbx,w32: Use shorter retry intervals for keybox_file_rename.
* kbx/keybox-util.c (keybox_file_rename): Restart retry intervals after 800ms. -- The common use case is that the process waiting for a rename does an import while another process does a key listing with only short lock periods. Thus it does not make sense to set the final backoff time to 8s. It would actually be okay to retry every 100ms but that would spill the console with "waiting..." messages. This change prints the waiting message only every 1.5s. Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--kbx/keybox-util.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/kbx/keybox-util.c b/kbx/keybox-util.c
index 740ea73b4..13fedb32f 100644
--- a/kbx/keybox-util.c
+++ b/kbx/keybox-util.c
@@ -169,16 +169,11 @@ keybox_file_rename (const char *oldname, const char *newname)
* Note that we don't need this on Unix due to the inode
* concept.
*
- * So let's wait until the rename has worked. We use the
- * same retry intervals as used by dotlock.c, namely 50ms,
- * 100ms, 200ms, 400ms, 800ms, 2s, 4s and 8s. */
- if (!wtime)
+ * So let's wait until the rename has worked. The retry
+ * intervals are 50, 100, 200, 400, 800, 50ms, ... */
+ if (!wtime || wtime >= 800)
wtime = 50;
- else if (wtime < 800)
- wtime *= 2;
- else if (wtime == 800)
- wtime = 2000;
- else if (wtime < 8000)
+ else
wtime *= 2;
if (wtime >= 800)