diff options
author | Wolfgang Müller | 2021-05-28 16:02:54 +0200 |
---|---|---|
committer | Wolfgang Müller | 2021-05-28 16:02:54 +0200 |
commit | 69a9085b7b833c5c8a445784b479518cb391baae (patch) | |
tree | 8ed6ce37818f381e23b38dc74235206ec094040b | |
parent | 55fa25adb097d2681607d8b0f51a0c393cc9af1a (diff) | |
download | cgit-69a9085b7b833c5c8a445784b479518cb391baae.tar.gz |
cache: Disable caching for clones
Whilst the cache feature is useful for content that the web browser will
see, it is less useful when cgit is asked to clone a repository. Users
might end up with a tree that is ever so slightly out of date.
An upcoming commit will introduce functionality to offload clones to
git-http-backend(1). The cache feature will prevent this from working
correctly.
Therefore, disable cache processing for commands that have the is_clone
flag set.
-rw-r--r-- | cache.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -15,6 +15,7 @@ #include "cgit.h" #include "cache.h" +#include "cmd.h" #include "html.h" #ifdef HAVE_LINUX_SENDFILE #include <sys/sendfile.h> @@ -356,6 +357,7 @@ int cache_process(int size, const char *path, const char *key, int ttl, struct strbuf filename = STRBUF_INIT; struct strbuf lockname = STRBUF_INIT; struct cache_slot slot; + struct cgit_cmd *cmd; int result; /* If the cache is disabled, just generate the content */ @@ -370,6 +372,15 @@ int cache_process(int size, const char *path, const char *key, int ttl, fn(); return 0; } + + cmd = cgit_get_cmd(); + + /* Do not cache files that are being cloned */ + if (cmd && cmd->is_clone) { + fn(); + return 0; + } + if (!key) key = ""; hash = hash_str(key) % size; |