From f3205b598c5be0466ba7786f76fe69c2d917cc49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Sat, 25 Jan 2025 00:08:54 -0500 Subject: [PATCH] Fix duplicate data in cacheinfo file Since the cache file is opened for append, truncate it before calling iniWriteFile(). This isn't create because if it fails, it will leave the file empty, which will cause the next time this function is called to do a full request, but at least if fails safe. --- src/syncterm/webget.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/syncterm/webget.c b/src/syncterm/webget.c index 4459ec0010..b0d9c0e399 100644 --- a/src/syncterm/webget.c +++ b/src/syncterm/webget.c @@ -759,7 +759,16 @@ write_cacheinfo(struct http_session *sess) if (!iniSetBool(&info, NULL, "Immutable", sess->cache.immutable, NULL)) goto error_return; } - bool ret = iniWriteFile(sess->cache_info, info); + fflush(sess->cache_info); + bool ret; + if (chsize(fileno(sess->cache_info), 0) != 0) { + fseek(sess->cache_info, 0, SEEK_SET); + ret = false; + } + else { + fseek(sess->cache_info, 0, SEEK_SET); + ret = iniWriteFile(sess->cache_info, info); + } fclose(sess->cache_info); sess->cache_info = NULL; strListFree(&info); -- GitLab