From: Aaron Merey Date: Fri, 17 Mar 2023 15:20:50 +0000 (-0400) Subject: debuginfod-client.c: Skip empty file creation for cancelled queries X-Git-Tag: elfutils-0.190~79 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5527216460c6131527c27b06dada015b67525966;p=thirdparty%2Felfutils.git debuginfod-client.c: Skip empty file creation for cancelled queries Empty files in the client cache are used to indicate that contacted servers could not find a requested resource. Future queries for this resource will not be attempted until the cache_miss_s duration has passed. Currently these empty files are also created when a query is cancelled through the client's progressfn. This can occur, for example, when a user cancels a download with ctrl-c. This prevents user-cancelled queries from being retried promptly without having to modify cache_miss_s. Fix this by skipping the creation of an empty cache file when progressfn cancels a query. Signed-off-by: Aaron Merey --- diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index f861eb72a..5db5a753f 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,3 +1,8 @@ +2023-03-17 Aaron Merey + + * debuginfod-client.c (debuginfod_query_server): Do not create an + empty file in the cache if the query was cancelled by the progressfn. + 2023-02-07 Aaron Merey * debuginfod-client.c (cache_find_section): Avoid returning -ENOENT diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index ef4d47e32..b33408eb1 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -1667,9 +1667,9 @@ debuginfod_query_server (debuginfod_client *c, } } while (num_msg > 0); - /* Create an empty file named as $HOME/.cache if the query fails - with ENOENT.*/ - if (rc == -ENOENT) + /* Create an empty file in the cache if the query fails with ENOENT and + it wasn't cancelled early. */ + if (rc == -ENOENT && !c->progressfn_cancel) { int efd = open (target_cache_path, O_CREAT|O_EXCL, DEFFILEMODE); if (efd >= 0)